Emberjs - 无法查询嵌入式模型或关联

时间:2012-08-25 18:59:45

标签: ember.js ember-data

这个小提琴的一小部分:http://jsfiddle.net/v2t67/显示在我的问题中,但我的问题是我无法查询子模型的json,即评论模型。截至目前,我可以使用下面的查询从chrome开发者控制台访问父对象(Post Model),并从包含父对象的结果中,在控制台中,我可以单击它,我将看到嵌入的注释,如图所示在此屏幕截图中:http://imgur.com/3WL4I

那么如何使用objectAt(0).toJSON()查询注释直接返回它而不需要点击父对象才能看到它?

非常感谢。

 yt = App.store.findAll(App.Post)
 yt.objectAt(0).toJSON()   //to display the json for post

App.Comment = DS.Model.extend({
    content: DS.attr('string'),
    post: DS.belongsTo('App.Post')
});


App.Post = DS.Model.extend({
    body: DS.attr('string'),
    comments: DS.hasMany('App.Comment', { embedded: true } )
});

1 个答案:

答案 0 :(得分:1)

 App.Comment = DS.Model.extend({
   content: DS.attr('string'),
   post: DS.belongsTo('App.Post')
 });


 App.Post = DS.Model.extend({
   body: DS.attr('string'),
   comments: DS.hasMany('App.Comment', { embedded: true } )
 });

有关完整代码,请参阅:** http://jsfiddle.net/v2t67/ **

从源头阅读关联测试后,我找到了一种方法。关联测试在这里: ** https://github.com/emberjs/data/blob/master/packages/ember-data/tests/unit/associations_test.js **

仍然坚持上面的两个模型作为我们的例子,我们可以通过这样做来查询嵌入模型(评论模型)的json数据:

      **Approach 1**

 query = App.store.find(App.Post,  1)
 query.get('comments').objectAt(0).toJSON()

在进行进一步检查时,我发现如果你想要父模型的json(Post模型),上面的代码将不起作用。这就是我去json的方式:

      **Approach 2**

 query = App.store.find(App.Post)
 query.objectAt(0).toJSON()

你会得到一个 TypeError:对象没有方法'objectAt',如果你尝试使用方法1获取Post Model的json数据,你会得到 TypeError:无法调用方法'objectAt'未定义,如果您尝试使用方法2获取嵌入式模型的json数据。

如果我发现新的东西,我会更新。

           **UPDATE**

您可以通过将 {associations:true} 传递给 toJSON()函数来获取方法2,以便毫无错误地返回嵌入模型的json数据,如图所示下面:

 query = App.store.find(App.Post)
 query.objectAt(0).toJSON({associations: true})