Javascript 如何使用Ember适配器发出多个请求?
我正在构建一个余烬应用程序,作为我的后端。开箱即用的解析对关系做了一些奇怪的事情——它们只以一种方式工作。:/我一直试图通过在Ember中保存两个模型来手动使关系双向工作,但这看起来很混乱,可能意味着数据很容易失去同步。讨厌。所以现在我在寻找替代品 首先,让我更详细地解释一下 假设我有一篇Javascript 如何使用Ember适配器发出多个请求?,javascript,ember.js,parse-platform,schema,Javascript,Ember.js,Parse Platform,Schema,我正在构建一个余烬应用程序,作为我的后端。开箱即用的解析对关系做了一些奇怪的事情——它们只以一种方式工作。:/我一直试图通过在Ember中保存两个模型来手动使关系双向工作,但这看起来很混乱,可能意味着数据很容易失去同步。讨厌。所以现在我在寻找替代品 首先,让我更详细地解释一下 假设我有一篇帖子和评论。Parse将存储来自注释->帖子的关系,但不是相反。或者,我可以管理“指针数组”中的注释列表,但不能管理注释中的一对一关系 我看到两种选择: 修改API使用其平台的工作方式。这可能是更简单的方法,但
帖子
和评论
。Parse将存储来自注释
->帖子
的关系,但不是相反。或者,我可以管理“指针数组”中的注释列表,但不能管理注释中的一对一关系
我看到两种选择:
修改API使用其平台的工作方式。这可能是更简单的方法,但我宁愿在Ember中解决这个问题,这样我就可以为遇到这个问题的其他人打开适配器/序列化程序的源代码
找出在我的适配器中发出多个请求的方法。我想它会像这样工作:
findRecord: function(store, type, id, snapshot) {
snapshot.eachRelationship(relationship => {
// Do something to build a url for each hasMany relationship
});
return Ember.RSVP.promise(...);
}
athis.store.findRecord('post',id)
在应用程序代码中调用
b。Ember adapter根据模型中定义的内容查看post
具有hasMany
关系
c。适配器生成一个url,用于查找帖子id与我试图查找的id匹配的评论(解析非常容易)。是的,这意味着有多个请求,但(每个关系)只能再多请求一个。这与有效负载中存在links
属性时Ember所做的类似,但我们没有这样的属性,因为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(...);
}
非常感谢您提供的任何帮助。因此,基本上您是在试图覆盖余烬数据的默认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' })
});
});
代码片段非常模糊,但我希望你明白我的意思。你能发布你的模型代码吗?模型非常简单。我的等价的comments
模型将有类似于DS.belongsTo('post')
的内容,post
将有DS.hasMany('comment')
。啊,好的。这有助于开始。我想我可以使用snapshot对象来查找有很多关系,所以它更灵活一些,对吗?