使用不同的订阅更新相同的客户端 collection

Update same client collection with different subscription

我的订阅有问题,应该在客户端上用不同的记录集填充相同的 collection。 例如: 我有一本书 collection 和两个不同的出版物:

  1. Meteor.publish(‘books’, () => Books.find({ status: { $ne: 3 } });
  2. 发布返回书籍数组的“booksForReservation”(书籍根据预订和其他一些数据进行过滤)

当我从一条路线转到另一条路线时,客户端出现问题。所有书籍 collection 都在主要组件中,当我需要客户端上的那些 booksForReservation collection 时,不会只更新那套特定的书籍。

我在客户端订阅了:

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

但我仍然显示所有书籍 collection。当我使用服务器上使用的相同查询在客户端过滤 Books collection 时,collection 会更新。但是在服务器上过滤它没有任何意义。

如何使用不同的订阅更新相同的 collection?

您必须使用来自服务器的查询在客户端过滤集合。您订阅了两个出版物,因此在客户端上您将拥有来自两个出版物的数据。服务器端过滤收集的重点是安全。通过这样做,您不会向客户端发布任何不需要的数据。您可以在此处阅读更多相关信息 https://guide.meteor.com/data-loading.html#specific-queries