Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查用户是否具有特定角色_Javascript_Mongodb_Mongoose_Mongodb Query - Fatal编程技术网

Javascript 检查用户是否具有特定角色

Javascript 检查用户是否具有特定角色,javascript,mongodb,mongoose,mongodb-query,Javascript,Mongodb,Mongoose,Mongodb Query,因此,我在express服务器中使用mongoDb,并将用户信息存储如下: var UserSchema=新模式({ 用户名:{type:String,必需:true,索引:{unique:true}, 密码:{type:String,必需:true}, 电子邮件:{type:String,必需:true,索引:{unique:true}}, isActive:{type:Boolean,默认值:false}, signUpDate:{type:Date,默认值:Date.now()}, 角色

因此,我在express服务器中使用mongoDb,并将用户信息存储如下:

var UserSchema=新模式({
用户名:{type:String,必需:true,索引:{unique:true},
密码:{type:String,必需:true},
电子邮件:{type:String,必需:true,索引:{unique:true}},
isActive:{type:Boolean,默认值:false},
signUpDate:{type:Date,默认值:Date.now()},
角色:[
{
类型:mongoose.Schema.Types.ObjectId,
参考:“角色”
}
]

});
您可以使用
.aggregate()
将单个用户与其角色“连接”,然后运行
$match
验证是否存在名为
admin
的角色。如果特定用户没有此角色,则聚合将返回空数组:

User.aggregate([
    { $match: { _id: req.SecureUserId } },
    {
        $lookup: {
            from: "roles",
            localField: "roles",
            foreignField: "_id",
            as: "roles"
        }
    },
    { $match: { "roles.name": "admin" } }
]).exec((err, user) => {
    if(user.length === 1){
        next();
    }
})

如果secureuserid是字符串,请确保首先将其包装在mongoose对象id中!被困在那里有一点