2017-04-10 94 views
1

我對Ember有點新,所以請原諒我,如果這個問題說明我對框架的普遍缺乏理解。Ember hasMany與多個模型

基本上我試圖使用Contentful與Em​​ber。我發現這個插件,這似乎使這非常簡單https://github.com/davidpett/ember-data-contentful

但是,我遇到了一個問題,開始讓我非常沮喪。我有一個內容類型,它有一個「多引用」字段,它允許用戶引用多種不同的內容類型。基本上,我有一個「模塊」字段,它將是由幾個不同模塊組成的數組。每個模塊基本上都是它自己的模型。

在餘燼

modules: hasMany('module')

但是module可以是許多不同的模式中的一個,假設需要有對應於每個內容類型的模型。

我已經在這裏問過一個問題:https://github.com/davidpett/ember-data-contentful/issues/24,但一直未能完成此工作。

回答

2

要解決這個問題,您需要讓每個模型都從實現Contentful系統元數據屬性的基礎模型繼承。它們在json響應中的sys屬性中找到。

然後,您可以根據基礎模型的內容類型將該基礎模型擴展到與該內容類型對應的特定模型。

我意識到您正在嘗試在您發佈的問題主題中做類似的事情。我認爲你遇到的問題是你的基類沒有contentType屬性。

+0

謝謝!問題是模塊擴展的基本模型有一個名爲'contentType'的屬性: -/https://github.com/davidpett/ember-data-contentful/blob/master/addon/models/contentful.js – morrisbret

+0

我明白了,這是如何填充的?我猜是有一個適配器將sys.contentType.sys.id屬性放在那裏? – Robban

+0

這是正確的Robban也許是這樣的:https:// github。com/davidpett/ember-data-contentful/blob/master/addon/adapters/contentful.js – morrisbret

0

嗯,我不知道內容豐富。

我的團隊做用計算請求特定的模型手動解決這種動態類型。由於我們沒有找到更好的方法來使hasMany中的多個模型支持ember-data。它運作得非常好。
但是對於批量查詢,您可能需要實施批量請求摺疊技術以提高性能。

另一個想法是,將hasMany替換爲DS.attr()作爲無類型。並嘗試是否可以推送Payload並查看這些「模塊」,並將模塊模型手動匹配到適配器中的model.modules。這可能不起作用或僅適用於GET請求。
或者只是將這些有效內容模型名稱/ ID與您的model.modules進行匹配,並使用計算來查看正確的記錄並掛載到模型。

+0

您可以提供一段代碼,您可以使用計算來手動請求特定模型嗎?不知道如何去做這件事。謝謝! – morrisbret

0

原來有一個與ember-data-contentful lib有關的問題。降級到版本0.2.1現在解決了這個問題。作者意識到這個錯誤並正在尋找未來版本中的修復程序。謝謝大家的幫助!