考虑加入的集合的流星方法尚未得到核心的支持?

时间:2014-12-20 14:54:15

标签: meteor

我正在创建我的主要项目功能,因此在我的项目中做出一个重大的决定,我想要高效和优秀。可扩展的方案我使用不同的API来最终获取用户产品 1集合,以便在表格中显示可能由SKU TITLE从不同来源合并的产品信息。

我想到了两种方法(在这两种方法中我们都将Meteor.userId()添加到集合插入中,以便每个用户拥有它自己的产品:

1)创建每个API自己的集合,并在API查询中间或之后将产品提取到它,我将其插入sourceXProducts,同时按sku添加合并产品的逻辑并将其添加到主usersProducts只有我需要的字段,如果我们需要任何我们没有真正包含在主sourceXproducts中的任何内容,我们就会收集usersProducts我们可以查询它并得到它所以我们基本上保持所有可能的信息(因为它可以派上用场)

source1Products = new Meteor.Collection('source1Products');
source2Products = new Meteor.Collection('source2Products'); 
usersProducts = new Meteor.Collection('usersProducts'); 

优点:老实说我不确定,它也使我按照我学习Meteor的方式组织它似乎被大量使用。

缺点:核心不支持Meteor集合连接,所以我必须使用meteor包,例如:meteor-publish-composite这似乎很好,但这种方式可能会影响性能

2)创建1个集合,然后插入API响应的所有内容和其他apiSource字段,以便我们从X用户X api中选择产品。

usersProducts = new Meteor.Collection('usersProducts'); 

优点:没有加入,可能性能更好

缺点:没有组织,它可能成为一个大集合,也许它对mongodb不好

3)你的想法? :)

1 个答案:

答案 0 :(得分:2)

首先,你应该改进这个问题。您没有告诉我们有关您的架构的任何确切信息。您拥有的实体是什么,有什么类型的关系以及您认为您将要做什么类型的连接。你多久会做一次?

其次,您应该重新考虑您的架构,并考虑非关系数据库的术语。我看到许多人来自SQL世界,然后他们只是以相同的方式设计他们的架构。错误。 MongoDB不是SQL和你在那里学到的东西,你不应该试图在这里重用。您应该开始使用子文档和数组等功能,这些功能可以帮助您解决使用连接在SQL中执行的许多基本操作。因此,了解您的架构将有助于我们帮助您设计架构。例如,请参阅this answer,尤其是您在此处询问的类似问题的讨论评论。

第三,你评价过various solutions which exist out there了吗?有很多,但你没有告诉我们你尝试了它们中的任何一个以及它对你有用。对你和你的项目来说,它们的优点和缺点是什么?

第四,如果您懒得评估,可以使用peerlibrary:peerdbpeerlibrary:related。它们非常完美。你应该相信我。我是他们的作者。