簡體   English   中英

如何使用Ember適配器發出多個請求?

[英]How do I make multiple requests with an Ember adapter?

我正在使用Parse作為后端構建一個Ember應用程序。 開箱即用的解析關系對我們來說有些奇怪–它們僅以一種方式起作用。 :/我一直在嘗試通過將兩個模型都保存在Ember中來手動使兩種關系都起作用,但這似乎很麻煩,並且可能意味着數據很容易不同步。 uck 所以現在我正在尋找替代品。

首先,讓我詳細解釋一下。

假設我有一個postcomments 解析將存儲來自comments -> post的關系,反之則不然。 或者,我可以在“指針數組”中管理comments列表,但不能管理comments -> post的一對一關系。

我看到兩個選擇:

  1. 使用其Cloud Code平台修改API的工作方式。 這可能是更簡單的方法,但是我寧願在Ember中解決此問題,所以我可以為遇到此問題的其他人開源我的適配器/序列化器。
  2. 找出在我的適配器中發出多個請求的方法。 我想它會像這樣工作:

    一種。 在應用程序代碼中調用this.store.findRecord('post', id)

    b。 Ember適配器根據模型中定義的內容看到post具有hasMany關系。

    C。 適配器生成一個URL,該URL在帖子的ID與我要查找的ID匹配的地方查找注釋(使用Parse相當容易)。 是的,這意味着有多個請求,但每個請求只有1個。 這與Ember在有效負載中具有links屬性時的操作類似,但是由於Parse無法識別hasMany關系,因此我們沒有該屬性。

尋找2件事。 首先,關於我是否正確考慮的任何想法,或其他選擇的建議。 其次,也是最重要的一點,是關於我可以在適配器中鎖上什么鈎以觸發第二個請求的一些想法。 我最初的想法是這樣的:

findRecord: function(store, type, id, snapshot) {
  snapshot.eachRelationship(relationship => {
    // Do something to build a url for each hasMany relationship
  });

  return Ember.RSVP.promise(...);
}

非常感謝您提供任何幫助。

因此,基本上,您正在嘗試覆蓋ember-data的默認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' })
    });
});

該代碼段是完全模糊的,但是我希望你明白我的意思。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM