Node.js Mongoose-findOne中的多个参数

Node.js Mongoose-findOne中的多个参数,node.js,mongoose,Node.js,Mongoose,以下是我的路线: router.get('/home', function (req, res) { User.findOne({_id: req.user._id}, function (err, user) { if (err) return next(err); res.render('home', {user: user}); }); }); 基本上,为了让某人查看此/主页,他们需要登录,这就是User.findOne发挥作用的地方。它将在“用户”集合中搜索用户;如果找

以下是我的路线:

router.get('/home', function (req, res) {
User.findOne({_id: req.user._id}, function (err, user) {
    if (err) return next(err);
    res.render('home', {user: user});
});
});
基本上,为了让某人查看此/主页,他们需要登录,这就是User.findOne发挥作用的地方。它将在“用户”集合中搜索用户;如果找不到用户(如果用户未登录),它将返回一个错误。否则,它将显示/主页

现在,我想在我的网站上有一个单独的管理员部分,只有拥有管理员权限的用户才能访问该页面。我试过这样做:

router.get('/admin', function (req, res) {
User.findOne({_id: req.user._id, admin: true}, function (err, user) {
    if (err) return next(err);
    res.render('admin', {user: user});
});
});
我试图让代码做的是查找两个参数:用户是否登录,以及用户文档中的“admin”是否设置为“true”。显然,上面的代码不起作用,我不知道如何让它更好地工作

编辑:我的用户模式:

var schema = mongoose.Schema;
var UserSchema = new schema ({
username: {type: String, unique: true},
email: {type: String, unique: true, lowercase: true, required: true},
password: {type: String, minlength: passMinLength, required: true},
admin: {type: Boolean, default: false},
profile: {
    firstName: {type: String, default: ''},
    lastName: {type: String, default: ''}
}
});

查询
{u id:req.user.\u id,admin:true}
中没有任何错误,如果user.Schema也包含admin(布尔)字段,那么它应该可以工作

此外,另一种方法是在获得用户对象后检查admin

User.findOne({_id: req.user._id}, function (err, user) {

    if (err) return next(err);

    if(!user){
        //considering admin is boolean field
        if(!user.admin){
        // Not Authorised to access, do something
        }
        else{
        // User verified as Admin
         res.render('admin', {user: user});
        }
    }
    // UserId Not found, do something
});

查询
{u id:req.user.\u id,admin:true}
中没有任何错误,如果user.Schema也包含admin(布尔)字段,那么它应该可以工作

此外,另一种方法是在获得用户对象后检查admin

User.findOne({_id: req.user._id}, function (err, user) {

    if (err) return next(err);

    if(!user){
        //considering admin is boolean field
        if(!user.admin){
        // Not Authorised to access, do something
        }
        else{
        // User verified as Admin
         res.render('admin', {user: user});
        }
    }
    // UserId Not found, do something
});

你能粘贴用户模式吗?谢谢你的回复。我已经编辑了我的问题以包含用户架构。您可以粘贴用户架构吗?谢谢您的回答。我已经编辑了我的问题以包含用户模式。我的用户模式确实包含管理员(布尔值)字段。。。所以我不知道为什么它不起作用。。。如果一个admin:true的用户试图访问admin页面,它只会显示一个错误。好的,那么你是正确的。我编写的原始查询确实有效。所发生的事情是,我在MongoDB中手动输入admin:true,并将其写成:“admin”:“true”,而我本应将其写成:“admin”:true。。。所以谢谢你的帮助。我的用户方案确实包含管理员(布尔值)字段。。。所以我不知道为什么它不起作用。。。如果一个admin:true的用户试图访问admin页面,它只会显示一个错误。好的,那么你是正确的。我编写的原始查询确实有效。所发生的事情是,我在MongoDB中手动输入admin:true,并将其写成:“admin”:“true”,而我本应将其写成:“admin”:true。。。谢谢你的帮助。