MongoDB - Meteor - 嵌套模式上的更新数组

时间:2017-11-17 01:32:21

标签: javascript mongodb meteor mongodb-query

我在尝试在我的Schema上实现更新时遇到了麻烦。我不知道我做错了什么。这是两种模式:

const PermissionsSchema = new SimpleSchema({
  canAdmin: {
    type: Boolean,
    defaultValue: false,
  },
  canManageAudience: {
    type: Boolean,
    defaultValue: false,
  },
  canManageUsers: {
    type: Boolean,
    defaultValue: false,
  },
  allowedToPost: {
    type: [String],
    defaultValue: [],
  },
  allowedToChat: {
    type: [String],
    defaultValue: [],
  },
  allowedToAdmin: {
    type: [String],

    });

FBUsers.schema = new SimpleSchema({
  _id: {
    type: String,
  },
  email: {
    type: String,
    optional: true,
  },
  username: {
    type: String,
    optional: true,
  },
  name: {
    type: String,
  },
  surname: {
    type: String,
    optional: true,
  },
  birthdate: {
    type: Date,
    optional: false,
  },
  position: {
    type: String,
    optional: true,
  },
  avatar: {
    type: String,
    optional: true,
  },
  avatarUpdatedAt: {
    type: Date,
    optional: true,
  },
  isAdmin: {
    type: Boolean,
  },
  permissions: {
    type: PermissionsSchema,
  },
  calendar: {
    type: String,
    allowedValues: CALENDAR_OPTIONS.map(x => x.key),
    optional: true,
  },
  groups: {
    type: [String],
    defaultValue: [],
  },
  device: {
    type: String,
    allowedValues: DEVICE_PLATFORMS.map(x => x.toLowerCase()),
  },
  label: {
    type: String,
  },
  disableLabel: {
    type: Boolean,
    defaultValue: false,
  },
});
  defaultValue: [],
  },

我想更新权限字段(可能在一个查询中我想更新/推送allowedToPost数组权限,或者我想更新/推送allowedToChat数组权限。

我的查询需要处理我可以拥有的userIDs数组(multiUpdate),我想用groupId数组推送权限(我正在更新的权限将用于我正在更新的那个数组)。

我做的最后一个问题是:

          return FBUsers.update({ _id: { $in: userIds}}, { $push: { 'permissions.allowedToPost': { $each: groupIdsArr } } });

我得到了:

  

调用方法'fbuser.setPermissions'时出现异常MongoError:   字段'permissions.allowedToChat'必须是数组,但属于类型   文件中的字符串{_id:“I92aX1vfAfc3KSO8vn9cEQ0MwSt1”}

我做错了什么?

0 个答案:

没有答案