【问题标题】:Filter publish content in Meteor在 Meteor 中过滤发布内容
【发布时间】:2016-06-16 06:51:40
【问题描述】:

我想创建一个未参加教师课程的学生列表。

此列表旨在向教师显示所有尚未注册班级的学生。

  • 教师帐户包含他们教授的课程。
  • 学生帐户包含他们将参加的课程。

我不确定是否可以检查教师(当前用户)帐户中他们教授的课程,然后在您发布数据时过滤掉所有已选择该课程的学生。我尝试了多种变体,但没有任何效果。

路径:schemas.js

Schema.classes = new SimpleSchema({
        class: {
        type: [String],
        optional: true,
        autoform: {
            type: "select-checkbox",
            options: function () {
                return [
                {label: "Maths", value: 'Maths' },
                {label: "English", value: 'English'},
                {label: "Science", value: 'Science'},
                ];
            },
            afFormGroup: {
              label: false
            }
        }
    }
});

路径:publish.js

Meteor.publish('classes', function () {
     return Meteor.users.find({roles:'is_student'});
});

【问题讨论】:

标签: javascript arrays mongodb meteor publish-subscribe


【解决方案1】:

假设您的文档结构如下:

Users.insert({
  firstName: "Matthias",
  lastName: "Eckhart",
  isTeacher: true,
  classes: ["Secure Coding", "Hacking", "Software Design", "Software Quality", "Entrepreneurship"],
  office: "C221"
});
Users.insert({
  firstName: "John",
  lastName: "Doe",
  isTeacher: false,
  classes: ["Hacking", "Entrepreneurship", "Secure Coding"],
});
Users.insert({
  firstName: "Jane",
  lastName: "Doe",
  isTeacher: false,
  classes: ["Web Design", "Database Design", "Hacking"],
});
Users.insert({
  firstName: "Richard",
  lastName: "Roe",
  isTeacher: false,
  classes: ["English", "German"],
});

然后,您可以使用 $nin MongoDB 比较查询运算符获取所有在其classes 数组中没有特定班级的学生:

Users.find({
  isTeacher: false,
  classes: {
    $nin: ["Hacking"] // Add the classes you want to filter out here
  }
});

如果您想让学生没有参加某位老师的所有课程,您可以结合 $not$all 运算符:

Users.find({
  isTeacher: false,
  classes: {
    $not: {
      $all: ["Secure Coding", "Hacking", "Software Design", "Software Quality", "Entrepreneurship"]
    }
  }
});

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-02-24
  • 1970-01-01
  • 2015-08-15
  • 1970-01-01
  • 1970-01-01
  • 2021-06-03
  • 2016-07-12
  • 1970-01-01
相关资源
最近更新 更多