主干嵌套-通用架构

Backbone Nesting - General Architecture

本文关键字:-通 嵌套      更新时间:2023-09-26

我一直在做一些研究,但没有看到针对我的特定用例的示例。因此,非常感谢您提供一般的架构建议/资源。

我正在创建地址簿。

  • 用户创建联系人和群组。
  • 在普通池中创建的联系人。
  • 联系人可以关联多个组。
  • 如果一个联系人被更新,它被更新到所有的组。
  • 如果联系人被从普通分组池中删除,则该联系人将被从所有关联的分组中删除。

为联系人和群组创建单独的集合很容易,但现在我有点卡住了。

看来,骨干关联或骨干关系,甚至嵌套。js将提供我所寻找的。看起来主干关联比主干关系性能更好。有人有使用插件的经验吗?是否有更简单的手工编码解决方案?

是否有一个表示组和集合的骨干模型?该组可以包含一个contactid数组:

var Contact = Backbone.Model.extend({
    defaults: {
        name: "SomeName",
        phone: "1234567890",
        ...
    }
});
var Group = Backbone.Model.extend({
    defaults: {
       name: "someName",
       contactIds: [1, 2, 3, 4]
    }
});
var Contacts = Backbone.Collection.extend({
    model: Contact
});

如果您需要访问存储在给定组中的联系人的详细信息,您可以这样做:

contacts.get(id); 

返回用于CRUD操作的单个联系人的信息。您也可以类似地维护组的集合。

首先,您应该尝试使用标准的骨干方法找到解决方案,只有当您不能-您应该采取侧应用程序。

对于您的应用程序-有一个解决方案。您应该将联系人集合和组集合存储在两个不同的独立集合中。联系人集合中的每个模型都应该有"链接"到它的组元素——例如,额外的字段"groups"只包含它的组模型(如果你知道,JavaScript在操作相同的对象时也会操作链接,所以它是轻量级的)

有了这样的联系人集合,你可以编写一个特殊的方法,使用这个集合按组排序(为此实现集合比较器方法),并返回任何有用的对象进行呈现。例如:
{"group1": elements_of_group1, ...}

作为一个副作用,当你删除任何联系人你已经有一致的列表。