如何使用Angular 2服务提供包含指向另一个资源的链接/ids的资源集合

How to provide a collection of resources that contains links/ids to another resource with an Angular 2 service?

本文关键字:资源 另一个 链接 集合 ids 包含指 Angular 何使用 服务      更新时间:2023-12-11

我有一个用户集合。每个用户都有一个cards阵列,该阵列由用户选择的卡的ids组成。

user.cards = [10, 12, 24, 31]

我想要用户选择最多的10张卡片。

我有user.service.jscard.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是错误的做法?我是否应该有一个单独的集合,其中包含每个模型之间的链接(如关节表)?

为了帮助自己处理这个客户端问题,我研究了后端资源的样子。我想出了类似于"如何在RESTful API中处理多对多关系?"的方法。

这些是我的API端点可能的样子:/users/cards/cards/{cardId}/votes。CCD_ 14包含定义用户和他们所选择的卡之间的关系的资源。

在代码中,我确实在card.service.js中注入了vote.service.js。当我GET卡片时,我也用它们的votes子集来组合它们。有关更多信息,请参阅"angular js模型关系"。

我希望这能帮助任何遇到这个问题的人。

干杯!

相关文章: