Mongodb 在客户端加载数据库时Meteor性能

Mongodb 在客户端加载数据库时Meteor性能,mongodb,meteor,Mongodb,Meteor,我有一个Meteor应用程序,其中列出了书籍。单击书籍会显示其章节列表,单击章节会显示其评论列表。现在我正试图找出如何在Meteor客户端上优化性能 我主要关心的是我应该如何组织我的集合,以及是否有任何方法让服务器知道首先要发送什么数据。我是NoSQL新手,但正确的Mongo方法似乎是让章节成为一本书的子文档和章节的注释子文档 但是,我不希望客户端必须等到所有章节和注释都加载到客户端数据库中,才能显示书籍列表。我想我可以使用关系数据库配置,但我不确定是否可以强制Meteor先发送books表,或

我有一个Meteor应用程序,其中列出了书籍。单击书籍会显示其章节列表,单击章节会显示其评论列表。现在我正试图找出如何在Meteor客户端上优化性能

我主要关心的是我应该如何组织我的集合,以及是否有任何方法让服务器知道首先要发送什么数据。我是NoSQL新手,但正确的Mongo方法似乎是让章节成为一本书的子文档和章节的注释子文档

但是,我不希望客户端必须等到所有章节和注释都加载到客户端数据库中,才能显示书籍列表。我想我可以使用关系数据库配置,但我不确定是否可以强制Meteor先发送books表,或者使用Meteor和关系数据库是否会给我带来其他问题


另外,因为我只传送文本,也许这不会是什么大问题?任何建议,谢谢

有两个原则你应该牢记在心

  • 您不必每次都发布所有内容
  • 是客户订阅,这决定了订单
为了发布没有章节的图书列表,可以使用如下查询

Meteor.publish( "booksList", function () {
   return Books.find( {}, {fields: {bookName: 1}} );
} );
这将返回只有两个属性的集合:\ id和bookName

在第二次出版中,您可以发送整个内容,但一次只能发送一本书:

Meteor.publish( "fullBook", function ( bookId ) {
   return Books.find( {_id: bookId} );
} );
在客户端上,您应该确保在使用结果之前等待发布发生


当然,这些都没有经过测试。我为这些错误提前表示歉意。

您应该只发布必要的文件。否则您的应用程序会变慢。

我不知道您可以一次获取文档。那很好。我最终把书分成了一个单独的集合,同时把评论作为章节的子文档。与子文档一起工作给了我一些不需要阅读的查询和循环的trubel-访问数据。每当你链接到一个博客、图书馆或其他你参与的外部资源时,谢谢你,我会考虑这个问题。我分享这篇文章是想了解如何出版这本书。不是为了推销我自己。谢谢你的建议