javascript - 在观察者中发布附加游标

标签 javascript meteor

我有一个如下所示的文档。

{
  _id: ObjectId,
  orders: [ObjectId, ObjectId]
}

对这些订单的查找将产生类似这样的结果

{
  _id: ObjectId,
  products: [ObjectId, ObjectId, ObjectId]
}

现在我的出版物将找到并观察父 Meteor.users

Meteor.publish(function () {
  let handle = Meteor.users.find(this.userId).observe({
    added: doc => {
      // publish all orders
      // publish all products within that order
    },
    changed: doc => { /** same as above */ }
  });
  this.ready();
  this.onStop(() => handle.stop());
});

当其中任何一个发生变化时,我想修改顶级文档并发布它。也就是说:

this.changed('user', doc._id, publishRelations(doc));

对于 meteor 来说这可能吗?

最佳答案

您应该能够使用peerlibrary:reactive-publish 来做到这一点。您只需将要发布的光标包装在出版物中的自动运行中即可。只要 react 性依赖项之一(在本例中为三个游标)发生变化,就应该重新运行它:

Meteor.publish("userOrders", function() {
   var self = this;
   self.autorun(function() {
      var productIds = [];

      // get logged in user
      var userCursor = Meteor.users.find(self.userId);

      //  get orders belonging to logged in user
      var ordersCursor = Orders.find({userId: self.userId});


      // create array of product Ids from user's orders  
      // You could probably make this better by omitting duplicates  
      ordersCursor.forEach(function(doc, index) {
        _.each(doc.products, function(productId) {
           productIds.push(productId);
         });
      });

      // get products in array
      var productsCursor = Products.find({ _id: { $in : productIds } });

      // return array of cursors
      return [
         userCursor,
         ordersCursor,
         productsCursor
      ];

   });

});

关于javascript - 在观察者中发布附加游标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34228219/

相关文章:

javascript - 需要恢复点击间隔

javascript - 使用重定向到 promise 链

javascript - 定位绝对 div 并在 div 外部切换

javascript - 在 Javascript 中从时间获取子午线

html - 使用 cheerio 从 DOM 获取 innerHTML

javascript - meteor : "=> Exited with code: 8"错误

javascript - 从 Meteor.method 中的多个 promise 返回值

尝试将非空白与工作演示匹配时,Javascript Regexp 表现奇怪

reactjs - renderStatic 的 Helm 错误

angularjs - 如何将动态的键名显示为html