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 将从您的请求对象中删除用户对象