1

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

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

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

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

4

2 回答 2

2

有两个原则你应该记住

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

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

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

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

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

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

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

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

于 2013-03-24T20:19:46.900 回答
0

你应该只发布必要的文件。否则你的应用程序会减慢参考这个链接。

于 2017-09-05T06:07:17.377 回答