流星发布和订阅大型收藏

Ama*_*man 1 mongodb meteor

因此,让我们以这种情况为例,在电子商务应用程序中,用户搜索“手表”。

我是否建议发布和订阅整个产品系列?因为那张桌子我长大了。我可以不订阅而从收藏中获取吗?

另外,在Meteor 1.3中,哪个是定义集合的最佳位置?根据我的阅读,它必须位于中/imports/api,但对其进行一些说明可能会有所帮助。

谢谢,

Dav*_*don 5

当您想将数据发送到流星客户端时,有三种选择-选择自己的冒险方式。

选项1:发布整个收藏集

优点:易于实现,在数据到达后可在客户端上快速使用/过滤,发布可在服务器上为所有客户端重用

缺点:伸缩性不好/不能处理几千个文档,可能要传递给客户很多

以下情况下使用:您的收藏夹很小,客户端需要所有这些来进行过滤/搜索/选择

选项2:使用方法

您可以使用流星方法将过滤后的文档传递给客户端,而不是发布它们。即,用户搜索“手表”,并且该方法仅传递那些文档。有关更多详细信息,请参见指南的本部分。您可以根据需要将文档填充到本地集合中,但这不是必需的。

优点:性能,可伸缩性,数据隔离(您不必担心文档的某些子集是由另一个订阅添加的)

缺点:设置和管理比订阅要多

以下情况下使用:您拥有无限制的集合,并且您需要以最高效的方式获得子集

选项3:使用反应式订阅

这与(2)非常相似,不同之处在于您将autorun在更改搜索参数后重新订阅。有关更多详细信息,请参见本节

优点:比(2)更易于实现

缺点:比(2)运算量更大,但速度较慢(2),可能的例外是发布可以在服务器上重用(搜索时不太可能)

以下情况下使用:您拥有无限制的集合,并且您需要一个工作量/代码量最少的子集


在不了解您的特定用例的情况下,我会选择(2)。

至于定义集合的位置,请参阅本节todos应用程序以获取示例。建议使用imports/api您提到的方法。有关原因的解释,请参见此问题。如果您需要更多详细信息,建议您另开一个问题。