用req.user进行查询-似乎无法获取操作方法

时间:2018-12-13 19:33:44

标签: javascript node.js mongodb mongoose

我有这个猫鼬模式:

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"]之类的东西。那将意味着我必须遍历权限数组,这在性能方面是不利的。那么,如何在不循环的情况下访问所有区域?有什么办法吗?

谢谢。

0 个答案:

没有答案