gpt4 book ai didi

在查询中使用数组时,Meteor.publish 不会更新客户端

转载 作者:行者123 更新时间:2023-12-02 05:03:37 26 4
gpt4 key购买 nike

考虑这段代码:

Meteor.publish("Children", function (id) {
// Find all the items that are children of an item that I am sharing
//
var sharing = Items.find({$and : [{_id:id},{sharing:{$elemMatch: {user_id:this.userId}}}]}).fetch();
var shared_children = [];
sharing.forEach(function(share){
share.children.forEach(function(child){
shared_children.push(child.id);
});
});
return Items.find({_id:{$in : shared_children}});
});

在我的 Meteor.publish 中,我动态生成一个 id 数组以在我的 .find 中使用。它适用于手动查询数据,但当我将新元素添加到“共享”字段时,只有我添加该字段的客户端显示更新。查看同一元素的其他客户端不会获得从服务器发送的更新值。他们只需使用 minimongo 数据库中已有的内容进行更新。服务器端MongoDB确实显示了新条目,但我无法在创建它的客户端以外的任何客户端上查询它。

问题是我的 .find 使用了一个计算值数组,因此依赖系统没有再次调用我的发布事件吗?

最佳答案

Meteor 的 react 性运行在服务器端是一个常见的误解。相反,典型的模式是客户端发生某些变化,客户端有一个 react 变量(例如 Session 对象)作为订阅的参数。订阅值的更改将导致使用新参数重新调用发布。

相反,如果您想在服务器端执行此操作,则需要设置观察者,如 counts-by-room example 中所示。

关于在查询中使用数组时,Meteor.publish 不会更新客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13951068/

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