我正在尝试添加角色包,然后设置一个自定义用户角色,如guest或member,这样我就可以将其与付费计划一起使用。我得到了以下错误
Exception in defer callback: Error: When the modifier option is true, validation object must have at least one operator
at checkModifier (packages/aldeed:simple-schema/simple-schema-validation.js:271:1)
at doValidation1 (packages/aldeed:simple-schema/simple-schema-validation.js:321:1)当我运行以下函数时
Meteor.methods({
setUserRole: function(userId, roleToSet){
// check(Meteor.userId(), String);
check(userId, String );
check(roleToSet, String);
var user = Meteor.users.findOne(userId);
if (_.isEmpty(user.roles)) {
Roles.addUsersToRoles(userId, roleToSet);
}
}
});发布于 2015-07-28 02:25:37
此错误由simple-schema抛出,这意味着使用的update方法使用的修饰符没有操作符($set,$unset,..等)。最新版本的roles包似乎在与Roles.addUsersToRoles相关的代码中避免了这一点,但是如果在注释使用addUsersToRoles方法的行时错误消失了,那么您可能需要
meteor update alanning:roles
Roles.addUsersToRoles(userId、roles、Roles.GLOBAL_GROUP)
发布于 2015-07-28 09:00:13
这通常意味着您正在尝试$set一个尚未添加到模式中的字段。
如果您使用的是望远镜,请确保为Roles包所需的任何字段调用Users.addField()。
发布于 2015-12-21 05:33:28
当您将架构应用于用户集合时,就会发生这种情况。
您可以应用两种类型的roles:
roles: {
type: Object,
optional: true,
blackbox: true
},或
roles: {
type: [String],
optional: true
}您不能同时使用这两种方法。在您的示例中,由于您没有在Roles.addUsersToRoles(userId, roleToSet);中使用groups,因此您需要第二个角色模式定义示例。
请注意,如果不更改方案,您将无法使用组。
https://stackoverflow.com/questions/31649573
复制相似问题