Node.js / Express.js 从请求中删除用户,将其从数据库中删除
Node.js / Express.js Removing user from request, removes it from database
代码如下:
exports.delete = function (req, res, next) {
console.log(req.user);
req.user.remove(function (err) {
if(err) {
return next(err);
} else {
res.json(req.user);
}
})
};
当然这个函数是delete
方法的回调,我不明白的是,为什么删除req.user
也会从MongoDB中删除特定用户,因为它是只是一个请求。
编辑:
我有另一个在同一路由上执行的回调 (GET):
exports.userByID = function (req, res, next, id) {
User.findOne({
_id: id
}, function (err, user) {
if (err) {
return next(err);
} else {
req.user = user;
next();
}
});
};
用户是 MongoDB 模特。
在您执行 req.user = user
的地方,您将 req.user
的值设置为 mongodb 模型的实例。
因此,调用 req.user.remove
实际上是在调用您的 mongodb 模型 remove
函数。
将您的删除功能更改为:
exports.delete = function (req, res, next) {
console.log(req.user);
delete req.user
//etc...
};
delete req.user
将从您的请求对象中删除用户对象
代码如下:
exports.delete = function (req, res, next) {
console.log(req.user);
req.user.remove(function (err) {
if(err) {
return next(err);
} else {
res.json(req.user);
}
})
};
当然这个函数是delete
方法的回调,我不明白的是,为什么删除req.user
也会从MongoDB中删除特定用户,因为它是只是一个请求。
编辑:
我有另一个在同一路由上执行的回调 (GET):
exports.userByID = function (req, res, next, id) {
User.findOne({
_id: id
}, function (err, user) {
if (err) {
return next(err);
} else {
req.user = user;
next();
}
});
};
用户是 MongoDB 模特。
在您执行 req.user = user
的地方,您将 req.user
的值设置为 mongodb 模型的实例。
因此,调用 req.user.remove
实际上是在调用您的 mongodb 模型 remove
函数。
将您的删除功能更改为:
exports.delete = function (req, res, next) {
console.log(req.user);
delete req.user
//etc...
};
delete req.user
将从您的请求对象中删除用户对象