[英]How do I make multiple requests with an Ember adapter?
我正在使用Parse作為后端構建一個Ember應用程序。 開箱即用的解析關系對我們來說有些奇怪–它們僅以一種方式起作用。 :/我一直在嘗試通過將兩個模型都保存在Ember中來手動使兩種關系都起作用,但這似乎很麻煩,並且可能意味着數據很容易不同步。 uck 所以現在我正在尋找替代品。
首先,讓我詳細解釋一下。
假設我有一個post
和comments
。 解析將存儲來自comments
-> post
的關系,反之則不然。 或者,我可以在“指針數組”中管理comments
列表,但不能管理comments
-> post
的一對一關系。
我看到兩個選擇:
找出在我的適配器中發出多個請求的方法。 我想它會像這樣工作:
一種。 在應用程序代碼中調用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.