本出版物的目标是发布团队已“解锁”并满足先决条件的问题。它工作正常,但是当团队解决其他问题(添加到 team.solved 字段)时,发布不会响应更新。
我发现这是因为 Teams.findOne({}); 的结果。查询不会被动更新,因此 team.solved 字段永远不会改变。是否有更好的设计可以让它进行反应性更新,还是我必须将其更改为 Teams.find() 并使用 .observeChanges() ?
Meteor.publish("problems", function () {
if(!this.userId) return [];
var user = Meteor.users.findOne(this.userId);
if(!user.profile.team) return [];
var team = Teams.findOne({_id:user.profile.team});
return Problems.find({requirements: {$not: {$elemMatch: {$nin: team.solved}}}});
});
如果我在这里使用任何不寻常的约定,请告诉我。