我有这个猫鼬模式:
var mongoose = require("mongoose"),
passportLocalMongoose = require("passport-local-mongoose");
let userSchema = new mongoose.Schema({
username:
{type: String,
unique: true
},
password: String,
privileges:
[{
region: Number,
read: Number,
write: Number,
edit: Number
}]
});
userSchema.plugin(passportLocalMongoose);
module.exports = mongoose.model("User", userSchema);
,我想检查用户是否可以通过中间件访问该区域,如下所示:
if(req.isAuthenticated())
{
console.log(req.user.privileges[0]["region"]);
User.findOne({'username': req.user.username, "privileges.region": {$in: [1, req.user.privileges.region]}}, function(err, usr)
{
if(err)
{
console.log("middleWare.access2 - " + err);
return res.redirect("/login");
}
else
{
if(usr !== null)
{
return next();
}
else
{
return res.redirect("/login");
}
}
})
}
问题是我真的不知道应该如何设置“ privileges.region”。它仅适用于req.user.privileges[0]["region"]
之类的东西。那将意味着我必须遍历权限数组,这在性能方面是不利的。那么,如何在不循环的情况下访问所有区域?有什么办法吗?
谢谢。