2017-07-07 106 views
0

我的訂閱有問題,應該用不同的記錄集在客戶端上填充相同的集合。 例如: 我有一個書籍集合和兩個不同的出版物:使用不同的訂閱更新相同的客戶端集合

  1. Meteor.publish(‘books’,() => Books.find({ status: { $ne: 3 } });
  2. 發佈「booksForReservation」,這是返回的書籍的陣列(書籍基於預約和其他一些數據過濾)

當我從一條路由到另一條路由時,客戶端出現問題。所有圖書集都在主要組件中,當我需要那些booksForReservation客戶端集合時,不會僅使用該特定集合的書籍進行更新。

我已經訂閱的客戶端上,如:

Meteor.subscribe(‘booksForReservation’, reservationsIds); 
let books = Books.find({}).fetch(); 

,但我仍然得到所有藏書顯示。當我使用與服務器上使用的查詢相同的查詢在客戶端上篩選了Books集合時,集合已更新。但是,然後在服務器上過濾它沒有任何意義。

如何更新不同訂閱的相同集合?

+0

參見https://stackoverflow.com/questions/44006793/overlapping-meteor-publications/44007620#44007620 – ghybs

回答

2

您必須使用來自服務器的查詢過濾客戶端的集合。您訂閱兩份出版物,因此在客戶端上您將擁有來自兩者的數據。在服務器端過濾集合點是安全的。通過這樣做,您不會向客戶端發佈任何不需要的數據。你可以在這裏閱讀更多關於https://guide.meteor.com/data-loading.html#specific-queries

相關問題