编辑:请参阅结尾
的解决方案我的猜测是将模型(在我的情况"用户"中(放入=>类型中,但随后会说"断言失败,您需要通过模型..."
我确实有一个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/