当我对影响UserProfiles的数据库进行更改时,将更新客户端。例如,如果我将工作日从true更改为false,则UserProfile将在计算机屏幕上显示或消失。但是,例如,当我更改“出勤”时,创建一个新的出勤记录,这应该使UserProfile出现,除非重新加载页面,否则什么都不会发生。我认为这与不重新运行studnentUserIds有关。
我如何使Meteor注意到这些变化?
这是使用Meteor,React和mongoDB构建的。
Meteor.publish('teacher.AdminDashboardContainer.userProfiles', function getStudentUserProfiles(rollCallDate) {
if (this.userId) {
const start = new Date(moment(rollCallDate).startOf('day').toISOString());
const end = new Date(moment(rollCallDate).endOf('day').toISOString());
const weekday = `student.days.${moment(rollCallDate).format('dddd').toLowerCase()}`;
const studentUserIds = Attendances.find({
$and: [
{ createdAt: { $gte: start, $lt: end } },
],
}).map(attendance => attendance.studentUserProfileId);
return UserProfiles.find({
$or: [
{ _id: { $in: studentUserIds } },
{
$and: [
{ [weekday]: true },
],
},
],
}),
}
// user not authorized. do not publish secrets
this.stop();
return false;
});
答案 0 :(得分:0)
如何使用publish-composite?它自己处理“反应性”部分。 https://github.com/englue/meteor-publish-composite