为什么users
发布在其entities
参数更改时不发布新数据?
客户代码
const subReady = useTracker(() => {
return Meteor.subscribe('users', selectedEntities).ready();
}, [selectedEntities]);
字符串
服务器代码
Meteor.publish('users', function (entities) {
check(entities, Match.Maybe(Array));
const entityUsers = Entities.find(
{groupName: {$in: entities}},
{fields: {userIds: 1}},
)
.fetch()
.map(a => a.userIds);
const userIds = [].concat(...entityUsers);
console.log(`userIds:`, userIds);
return Users.find(
{_id: {$in: userIds}},
{
fields: {username: 1, profile: 1, logins: 1, isSNR: 1},
},
);
});
型
由于客户端在useTracker
中订阅,因此当依赖关系发生变化时,客户端将重新订阅。使用Meteor开发工具,我看到了预期的重新订阅,但发布仅在初始订阅期间运行。
1条答案
按热度按时间mzaanser1#
通常情况下,当客户端重新订阅时,发布会重新运行,但如果参数值与上一次调用中的参数值相同,Meteor不会重新运行发布。您可以添加更多的日志useTracker回调来检查它是否使用不同的参数值重新运行。