因此,让我们采用这种方式,在电子商务应用程序中,用户搜索"手表"。
我建议发布和订阅整个产品系列吗?因为那张桌子我的成长很多。我是否有可能从订阅中获取而不订阅它?
此外,在Meteor 1.3中,哪个是定义集合的最佳位置?从我读到的内容来看,它必须在/imports/api
中,但对它的一些启示可能会有所帮助。
谢谢,
答案 0 :(得分:5)
当您想要向流星客户端获取数据时,您有三种选择 - 选择自己的冒险。
专业人员:一旦数据到达,便于实施,快速使用/过滤客户端,可以在服务器上为所有客户端重复发布
缺点:不能很好地扩展/没有工作超过几千个文档,可能需要传输到客户端很多
在时使用:您有一个规模较小的集合,而客户端需要所有这些集合来过滤/搜索/选择
您可以使用meteor方法将过滤后的文档传送到客户端,而不是发布它们。即用户搜索"腕表",该方法仅提供那些文件。有关详细信息,请参阅this section of the guide。如果您愿意,可以将文档填充到本地集合中,但这并不是必需的。
专业人员:性能,可扩展性,数据隔离(您不必担心其他订阅添加了某些文档子集)
缺点:设置和管理比订阅更多
何时使用:您拥有无限制的集合,并且您需要以最高效的方式使用子集
这与(2)非常相似,除非您在更改搜索参数后在autorun
中重新订阅。有关详细信息,请参阅this section。
专业人员:比(2)
更容易实施缺点:计算成本更高,比(2)慢一点,可能的例外是出版物可以在服务器上重复使用(在搜索的情况下不太可能)
在时使用:您有一个无限制的集合,并且您需要一个努力/代码最少的子集
在不了解您的特定用例的情况下,我会选择(2)。
有关定义集合的位置,请参阅this section和todos app以获取示例。建议使用您提到的imports/api
。有关原因的解释,请参阅this question。如果您需要更多详细信息,我建议您另外打开一个问题。
答案 1 :(得分:0)
一般来说,我们不会立即将所有提取的数据发布到网页上。在用户体验方面,它对客户来说太冗长了。一个常见的建议是分页加分类。
对于Meteor,服务器上的集合与客户端上的集合不同。简而言之,客户端上的集合是服务器集合的子集。该子集中的数据由Meteor的发布 - 订阅机制确定。数据在服务器上发布,您在客户端上订阅它。这样就可以得出子集。您可以根据您在客户端上使用的子集的内容和方式,定义过滤,排序,计数等来对派生子集进行整形。该文档包含一个相当不错的指南和有关Meteor collections的详细信息。
定义集合的地方在Meteor中非常灵活。它不一定是/imports/api
。它可以是服务器和客户端都可以访问的任何位置,因为在一般情况下,服务器需要查看数据并定义操作集合的方法,客户端需要查看它以便在网页。但是,如上所述,它很灵活,取决于您如何实现和构建应用程序。它可以是服务器和客户端都可访问的位置,但它不需要。在某些情况下,集合仅在服务器上定义,客户端从隐式和间接协议中获取数据。 Meteor方法就是其中之一,而Restful API则是另一个。这是一个个案,你做你感觉最好的事情。这就是乐趣所在。订阅是常见且方便的,但不是唯一的。
Meteor分别为服务器和客户端上的文件夹访问定义了特殊规则,Meteor 1.3为调制规定了新的规则。我喜欢阅读Meteor文档并发现它们非常有用,例如this one有助于对上述规则有更深入的了解。