2013-03-20 74 views
1

我有一個列出書籍的Meteor應用程序。點擊一本書顯示其章節列表,然後單擊一章顯示其評論列表。現在我試圖找出如何優化Meteor客戶端的性能。在客戶端加載db時的流星性能

我主要關心的是如何構建我的集合,以及是否有任何方法讓服務器知道首先發送什麼數據。我是NoSQL的新手,但似乎正確的Mongo方法是讓這些章節成爲書籍的子文檔和章節的註釋子文檔。

但是,我不希望客戶端必須等到所有章節和註釋都加載到客戶端數據庫中才顯示書籍列表。我想我可以使用關係數據庫配置,但我不確定是否可以強制Meteor先發送書本表,或者如果使用關係數據庫的Meteor會給我任何其他問題。

此外,由於我只是傳輸文本,也許這不會有太大的問題?任何建議感激!

回答

2

有兩個原則,你應該記住

  • 你不必每次
  • 是誰訂閱客戶端發佈的一切,這決定了訂單的訂貨

發佈沒有章節的書籍列表,您可以使用像這樣的查詢

Meteor.publish("booksList", function() { 
    return Books.find({}, {fields: {bookName: 1}}); 
}); 
在第二_id和BOOKNAME

發佈,你可以一次發送整個事情,但只有一本書:

,應返回只有兩個屬性的集合

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

你應該在客戶端上確保在使用結果之前等待發布。

這當然都沒有經過測試。我提前爲錯誤道歉。

+0

不知道,你可以在同一時間得到的文檔。這很好。 我最終將書籍拆分爲一個單獨的集合,同時將註釋保留爲章節的子文檔。使用子子文檔給了我一些trubbel訪問數據,沒有太多困難的查詢和循環。 – datacarl 2013-03-30 09:27:05

0

你應該只發布必要fileds.Otherwise您的應用程序將放慢reffer this link.

+0

無論何時您鏈接到您參與的博客帖子,圖書館或其他外部資源,[您必須明確指出此問題](https://stackoverflow.com/help/promotion)。 – 2017-09-05 06:32:16

+0

@NathanTuggy謝謝,我會考慮這件事。實際上,我分享這個想法來了解如何做出版。不要宣傳我的自我。謝謝你的建議 – 2017-09-05 07:07:44