如何使用Emberfire推出或更新数据



编辑:请参阅结尾

的解决方案

我的猜测是将模型(在我的情况"用户"中(放入=>类型中,但随后会说"断言失败,您需要通过模型..."

我确实有一个user.js/app/models

这是路由器的摘录(登录函数后(

self.store.push({
                data: {
                    id: data.currentUser.uid,
                    type: 'user',
                    attributes: {
                        displayName: data.currentUser.displayName,
                        email: data.currentUser.email,
                        photoURL: data.currentUser.photoURL,
                        firebaseUID: data.currentUser.uid,
                        rank: "scorer",
                        status: "active",
                        loginCount: 0,
                        provider: provider,
                        timestamp: new Date().getTime()
                    }
                }
            });

这是我的模型(app/型号中的user.js(

import DS from 'ember-data';
export default DS.Model.extend({
  displayName: DS.attr('string'),
  email: DS.attr('string'),
  photoURL: DS.attr('string'),
  firebaseUID: DS.attr('string'),
  rank: DS.attr('string'),
  status: DS.attr('string'),
  loginCount: DS.attr('string'),
  provider: DS.attr('string'),
  timestamp: DS.attr('number')
});

请帮助:(感谢大家提前!

edit =>工作的解决方案:如果您执行creterecord并匹配" id:"属性,它将使用相同的ID更新记录(如果您指定了自己的ID,则可以使用(。但是,如果您让系统为您生成ID,我不确定如何更新记录。我认为您必须先提取ID。但是我还没有测试这个想法。如果有人很友善地测试它,那真是太棒了。

,而不是推动原始数据,创建模型并运行其save方法。

var user = this.store.createRecord('user', {
    displayName: data.currentUser.displayName,
    // set more properties here
})
user.save()

这样,Emberfire和Ember数据可以完成他们的事情,并确保正确格式化数据。另请参阅

  • https://github.com/firebase/emberfire/blob/master/docs/quickstart.md#5-save-data
  • https://guides.emberjs.com/v3.0.0/models/creating-updating-and-pating-and-deleting-records/
  • https://guides.emberjs.com/v3.0.0/models/pushing-records-into-the-store/

最新更新