我正在构建一个以解析为后端的Ember应用程序。开箱即用,用关系做一些奇怪的事情,- they只能用一种方式工作。//我一直在试图通过在Ember中保存两个模型来手动地使关系双向工作,但这看起来很混乱,可能意味着数据很容易不同步。糟透了。所以现在我在寻找替代方案。
首先,让我更详细地解释一下。
假设我有一个post
和comments
。解析将存储来自comments
-> post
的关系,但不是相反的。或者,我可以在“指针数组”中管理comments
列表,但不能管理comments
-> post
的一对一关系。
我认为有两种选择:
this.store.findRecord('post', id)
在应用程序代码中被调用。
b.烬适配器看到post
有一个基于模型中定义的hasMany
关系。
适配器生成一个url,该url查找帖子的id与我试图找到的注释(使用Parse非常容易)匹配的注释。是的,这意味着多个请求,但仅多一个请求(每个关系)。这与Ember在有效载荷中有一个links
属性时所做的类似,但是我们没有这一点,因为Parse不识别hasMany
关系。找两样东西。首先,任何关于我是否正确地考虑到这一点的想法,或者关于其他选择的建议。其次,也可能是最重要的一点,我可以在适配器中锁定哪些钩子来触发第二个请求。我最初的想法是这样的:
findRecord: function(store, type, id, snapshot) {
snapshot.eachRelationship(relationship => {
// Do something to build a url for each hasMany relationship
});
return Ember.RSVP.promise(...);
}
这方面的任何帮助都是非常感谢的。
发布于 2016-01-18 05:43:27
因此,基本上,您试图覆盖默认的findRecord行为的成员-数据。
你现在的方法听起来不错。您可以创建适配器并为方法(如findRecord、findAll、query等)提供自定义定义。
典型的代码示例可以是:
findRecord(store, type, id, snapshot) {
let data = {};
const traditional = true;
return new Ember.RSVP.hash({
news: Ember.$.ajax({ url: wpUrl + 'post', dataType: "jsonp", type: 'GET' }),
events: Ember.$.ajax({ url: wpUrl + 'comments', dataType: "jsonp", type: 'GET' })
});
});
代码片段是完全模糊的,但我希望你明白我的意思。
https://stackoverflow.com/questions/34833803
复制