流星实时更新无法正常工作

时间:2018-07-07 01:34:46

标签: meteor

当我对影响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;
});

1 个答案:

答案 0 :(得分:0)

如何使用publish-composite?它自己处理“反应性”部分。 https://github.com/englue/meteor-publish-composite