如何使用Angular 2服务提供包含其他资源的链接/ ID的资源集合?
问题描述:
我有一组用户。每个用户都有一个cards
阵列,它由用户选择的卡片的id
组成。如何使用Angular 2服务提供包含其他资源的链接/ ID的资源集合?
user.cards = [10, 12, 24, 31]
我想有一个是最被用户选择了10张卡。我有和card.service.js
,我猜是DAO。 card.service.js
看起来像这样(为简单起见,使用普通的Promises
)。
(function(app) {
app.CardService = ng.core.Injectable({}).Class({
constructor: function() {},
getCards: function() {
return Promise.resolve(app.cards)
},
getCard: function(cardId) {
return Promise.resolve(app.cards.get(cardId));
},
getTop10Cards: function() {
// How would I go about doing this method?
}
})
})(window.app || (window.app = {}));
从逻辑上讲,我需要所有用户的列表,收集他们的cardIds
并聚集他们找到最常用的卡。但应CardService
使用UserService
(作为注射)?或者在另一个DAO中使用DAO以错误的方式去解决它?我应该有一个单独的集合,其中包含每个模型之间的链接(如联合表)?
答
为了帮助我解决这个客户端问题,我调查了后端资源的外观。我想出了一些类似于“How to handle many-to-many relationships in a RESTful API?”的东西。
这些是我的API端点将可能看起来像:/users
,/cards
,/cards/{cardId}/votes
。 /cards/{cardId}/votes
包含定义用户和他们选择的卡之间的关系的资源。
在代码中,我确实在card.service.js
的内部注入了vote.service.js
。当我使用这张牌时,我也将它们与他们的子集votes
合成。有关更多信息,请参阅“angular js model relationships”。
我希望这会帮助任何会遇到这个问题的人。
干杯!