我已经创建了一些快速中间件,用于基本上采用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正在做的事情,这使得他们在技术上不相等,即使他们是?在比较它们之前,我是否需要将这些值转换为字符串?