ember数据错误:断言失败:您只能向此关系添加“用户”记录

时间:2014-08-27 18:21:08

标签: ember.js ember-data

我有一个这样的余烬模型:

var attr = DS.attr,
    hasMany = DS.hasMany,
    belongsTo = DS.belongsTo;
App.Message = DS.Model.extend({
    message: attr(),
    user: belongsTo('user'),
    inquiry: belongsTo('inquiry')
});

我想像这样创建记号:

var createMessage = this.store.createRecord('message', {
    'message': "test message",
    'user': 1,
    'inquiry': 1
});
createMessage.save();

我知道这个问题已被问过几次,但我找不到任何明确的解决方案。有人可以形容我为什么会发生这种错误以及解决方案是什么。我使用的是 Ember:1.6.1和Ember-data:1.0.0-beta.5

1 个答案:

答案 0 :(得分:0)

当我使用createRecord()关系时,我手动构造每个对象。有几种不同的方法可以做到这一点:

有关向hasMany关系添加元素的示例,请参阅Ember.js & Ember Data: How to create record with hasMany relationship when the parent and child don't exist yet

或者这是处理belongsTo关系时的另一个例子:

var message = this.store.createRecord('message');
var user = this.store.createRecord('user');
message.set('user', user);

最终,Ember可以序列化这个DS.Model只有一个id号码,但在内部,它需要一个实际链接到实际对象。

更新:(贷记为@ Craicerjackless

如果用户确实存在并且您拥有ID:

 var user = this.store.find('user', 1).then(function(user){
    message.set('user, user);
});

这会通过id“1”获取用户,然后在找到用户后将其设置为模型的用户。