MeteorJS集合与数组

时间:2013-12-28 13:28:26

标签: meteor collaborative

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

我找不到创建嵌套MeteorJS集合的可能性,我不确定使用多个集合(使用集合中的对象数组)的(dis)优势(例如考虑可伸缩性,速度),所以我想知道多么好的设计模式:

A:

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

B:

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

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

或者也许是不同的东西?

1 个答案:

答案 0 :(得分:1)

自Meteor“identifies changes based on the fields of the MongoDB document. But ... does not support nested fields and arrays”以来,我会使用您在提案B中建议的一些数据结构:两个集合。这样可以确保只有新的/更新的项目被推送到客户端而不是画布的所有项目。

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

此外,您可以使用发布与关系包发布画布的所有相关项目,正如David Weldon在this answer中指出的我的问题,关于一个问题稍后您可能会遇到这种数据结构。