node.js说2个猫鼬变量看起来不相等?

时间:2015-01-28 17:32:20

标签: javascript node.js mongodb express mongoose

我已经创建了一些快速中间件,用于基本上采用url参数中给出的服务器ID的路由,然后在mongoDB中找到该服务器并检查当前会话用户ID是否等于创建的ownerID变量在mongoose服务器架构中。我的用途是我只希望用户能够删除他们自己创建的服务器 我已经把大量的console.logs放进去,所以我可以调试一下,但我担心这是我有限的知识之外的事情! 这是我的isOwnServer中间件:

var Server = require('../models/Servers.js');

module.exports = function(req, res, next) {
    Server.findById(req.params.id, function(err, server){
        console.log('beginning isOwnServer check on server id :' + server._id + " user id: " + req.user._id + " " + server.ownerID);
        if(err) return(err);
        console.log(req.user._id);
        console.log(server.ownerID);
        if(server.ownerID === req.user._id){
            console.log('your server verified');
            next();
        } else {
            console.log('not your server');
            res.send(401);
        }
    })
};

和mongoose架构中的OwnerID变量是:

ownerID: {type: Schema.ObjectId, ref: 'User'}

当我尝试删除服务器时,它只是给我一个401错误,但是console.log(server.ownerID)和console.log(req.user._id)给出了完全相同的ID,所以我不知道'看看为什么这个中间件说2个变量看起来完全相同时不相等 谢谢,如果有人可以帮助我!

编辑:即使我使用==而不是===,变量server.ownerID和req.user._id之间的比较仍然是返回false!即使看着我的控制台告诉我这两个相等的54c52f0f1c339ab8141828fc这是mongoose正在做的事情,这使得他们在技术上不相等,即使他们是?在比较它们之前,我是否需要将这些值转换为字符串?

0 个答案:

没有答案