编辑:请参阅最后的解决方案
我的猜测是把模型(在我的情况下'用户')放在=>内类型,但它会说“断言失败,你需要传递一个模型......”
我在app / models中有一个user.js
这是路由器的摘录(登录后功能)
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 / models中的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')
});
请帮忙:(提前谢谢大家!
编辑=>有效的解决方案:如果您执行createRecord并匹配“id:”属性,它将使用相同的ID更新记录(如果您指定了自己的ID,则会起作用)。但是,如果让系统为您生成ID,我还不确定如何更新记录。我假设你必须先提取ID。但我还没有测试过这个想法。如果有人会如此善良地测试它,那就太棒了。
答案 0 :(得分:-1)
创建模型并运行其save
方法,而不是推送原始数据。
var user = this.store.createRecord('user', {
displayName: data.currentUser.displayName,
// set more properties here
})
user.save()
这样,Emberfire和Ember Data可以完成他们的工作并确保数据格式正确。另见