所以我正在做一个聊天应用程序(在django的ember.js和backend中的前端)当然必须发送消息。
我在ember.js中的消息模型如下所示:
Messages.Message = DS.Model.extend({
body: attr('string'),
user: DS.belongsTo('user'),
time: attr('date'),
recipient: DS.belongsTo('recipient'),
});
我尝试使用此示例中的代码创建并保留新邮件:http://emberjs.com/guides/models/creating-and-deleting-records/
所以我在控制器中的saveMessage操作如下所示:
var store = this.store;
var message = store.createRecord('message', {
body: 'Lorem ipsum'
});
store.find('recipient', 2).then(function(recipient) {
message.set('recipient', recipient);
});
message.save();
但是生成的JSON属性'收件人'为null,因此服务器返回错误500,因为此字段不能为空。
JSON应如下所示:
{'body': 'loremipsum', 'recipient': {'username','some name'}, 'time': null, 'user': null}
你知道怎么做吗?
答案 0 :(得分:1)
find
是异步的,并返回一个promise。这意味着传递给then
的匿名函数很可能在您调用save
后执行。将保存移到then中,以便在保存之前附加了收件人。
var store = this.store;
var message = store.createRecord('message', {
body: 'Lorem ipsum'
});
store.find('recipient', 2).then(function(recipient) {
message.set('recipient', recipient);
message.save();
});