在客户端加载数据库时的流星性能

时间:2013-03-20 09:10:32

标签: mongodb meteor

我有一个列出书籍的Meteor应用程序。单击一本书会显示其章节列表,单击一章将显示其注释列表。现在我想弄清楚如何优化Meteor客户端的性能。

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

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

另外,由于我只是传输文字,也许这不是什么大问题?任何建议表示赞赏!

2 个答案:

答案 0 :(得分:2)

您应该记住两个原则

  • 您不必每次都发布所有内容
  • 是订阅的客户,这决定了订单

为了发布没有章节的书籍列表,您可以使用像这样的查询

Meteor.publish( "booksList", function () {
   return Books.find( {}, {fields: {bookName: 1}} );
} );

这应该返回一个只有两个属性的集合:_id和bookName

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

Meteor.publish( "fullBook", function ( bookId ) {
   return Books.find( {_id: bookId} );
} );

在客户端上,您应该确保在使用结果之前等待发布。

当然,这都是未经测试的。我提前为这些错误道歉。

答案 1 :(得分:0)

您应该只发布必要的文件。否则您的应用程序将放慢reffer this link.