这个小提琴的一小部分: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 } )
});
答案 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})