灰烬数据验证和关联

时间:2012-10-23 23:41:53

标签: ember.js ember-data

这对我来说似乎一遍又一遍,我想就如何处理它提出建议。请原谅我在coffeescript中写下的例子。

App.Post = DS.Model.extend
    title: DS.attr('string')
    author: DS.belongsTo('App.Author')

App.Author = DS.Model.extend
    name: DS.attr('string')
    posts: DS.hasMany('App.Post')

我想同时创建作者和相关帖子。

author = App.Author.createRecord({name: 'waldo'});

author.get('posts').createRecord({title: 'how to do the Ember'})

替代地

post = App.Post.createRecord({author: author})

问题是,我服务器上的Post模型验证了author_id的存在。因此,当我致电store.commit()时,author已成功提交,但post被拒绝,因为post.get('author.id') //=> undefined

更新:作者模型还在服务器上进行了验证,表明至少需要创建一个帖子,因此在创建帖子之前我无法调用store.commit()。< / p>

我搞错了交易。我将继续讨论它,但这似乎是一个很好的问题,以回答S / O以供将来参考。

1 个答案:

答案 0 :(得分:0)

您是否需要在交易中执行此操作?如果没有,您可以在将后记录添加到作者之前调用App.store.commit()。如果这不能解决您的问题,您可能会遇到异步问题。在这种情况下,您可以在作者模型上连接didCreate - 事件。当该事件触发时,已在服务器上创建记录,并且您的模型应具有ID。如果您在此阶段添加帖子,您的服务器不应该抱怨。