gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 06:36:39 24 4
gpt4 key购买 nike

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

{
_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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com