我在尝试在我的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”}
我做错了什么?