如何使用 Angular 2 服务向另一个资源提供包含 links/ids 的资源集合?
How to provide a collection of resources that contains links/ids to another resource with an Angular 2 service?
我有一个用户集合。每个用户都有一个cards
数组,由用户选择的id
张卡片组成。
user.cards = [10, 12, 24, 31]
我想拥有用户选择最多的 10 张卡片。
我有 user.service.js
和 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 是错误的方法吗?我是否应该有一个单独的集合,其中包含每个模型之间的链接(如联合 table)?
为了帮助自己处理这个客户端问题,我调查了后端资源的样子。我想出了类似于“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
。当我 GET
卡片时,我也将它们与 votes
的子集组合在一起。有关详细信息,请参阅“angular js model relationships”。
我希望这会对遇到这个问题的任何人有所帮助。
干杯!
我有一个用户集合。每个用户都有一个cards
数组,由用户选择的id
张卡片组成。
user.cards = [10, 12, 24, 31]
我想拥有用户选择最多的 10 张卡片。
我有 user.service.js
和 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 是错误的方法吗?我是否应该有一个单独的集合,其中包含每个模型之间的链接(如联合 table)?
为了帮助自己处理这个客户端问题,我调查了后端资源的样子。我想出了类似于“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
。当我 GET
卡片时,我也将它们与 votes
的子集组合在一起。有关详细信息,请参阅“angular js model relationships”。
我希望这会对遇到这个问题的任何人有所帮助。
干杯!