Javascript 如何使用Ember适配器发出多个请求?

Javascript 如何使用Ember适配器发出多个请求?,javascript,ember.js,parse-platform,schema,Javascript,Ember.js,Parse Platform,Schema,我正在构建一个余烬应用程序,作为我的后端。开箱即用的解析对关系做了一些奇怪的事情——它们只以一种方式工作。:/我一直试图通过在Ember中保存两个模型来手动使关系双向工作,但这看起来很混乱,可能意味着数据很容易失去同步。讨厌。所以现在我在寻找替代品 首先,让我更详细地解释一下 假设我有一篇帖子和评论。Parse将存储来自注释->帖子的关系,但不是相反。或者,我可以管理“指针数组”中的注释列表,但不能管理注释中的一对一关系 我看到两种选择: 修改API使用其平台的工作方式。这可能是更简单的方法,但

我正在构建一个余烬应用程序,作为我的后端。开箱即用的解析对关系做了一些奇怪的事情——它们只以一种方式工作。:/我一直试图通过在Ember中保存两个模型来手动使关系双向工作,但这看起来很混乱,可能意味着数据很容易失去同步。讨厌。所以现在我在寻找替代品

首先,让我更详细地解释一下

假设我有一篇
帖子
评论
。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(...);
    }
    
    a
    this.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对象来查找
    有很多关系,所以它更灵活一些,对吗?