0

我正在使用 MeteorJS 创建一个应用程序,该应用程序允许用户创建项目(例如,文本、图像)并在画布上协作地空间组织这些项目。可以创建多个画布。将来,项目可能会在(我还不确定)多个画布之间重复使用或复制。我以前从未设计过协作(甚至是数据库驱动的)应用程序。

我找不到创建嵌套 MeteorJS 集合的可能性,并且我不确定使用多个集合与在集合中使用对象数组的(缺点)优势(例如,考虑可伸缩性、速度),所以我想知道有什么好处设计模式将是:

A:

Collection Canvases {
    Canvas {
        Array Items;
    }
    Canvas {
        Array Items;
    }
}

乙:

Collection Items {
    Item {
       _id
    }
    Item {
       _id
    }
}

Collection Canvases {
    Canvas {
        Array ItemIDs;
    }
    Canvas {
        Array ItemIDs;
    }
}

或者也许是不同的东西?

4

1 回答 1

1

由于 Meteor “根据 MongoDB 文档的字段识别更改。但是......不支持嵌套字段和数组”,我会使用一些数据结构,就像您在提案 B 中建议的那样:两个集合。这确保只有新的/更新的项目被推送给客户端,而不是画布的所有项目。

然后像saimeunt在上面的评论中指出的那样建立Canvas和Items之间的关系: Canvas{_id:"xxx"} Item{_id:"xxx",canvasId:"xxx"}。(我在我的项目minutocash中使用了类似的方法,效果很好。)

此外,您可以使用publish-with-relations包发布画布的所有相关项目,正如 David Weldon 在我的一个问题的回答中指出的那样,关于您以后可能会在使用此数据结构时遇到的问题。

于 2013-12-28T16:06:07.110 回答