500 内部服务器错误:无法更新猫鼬中的用户

500 Internal Server Error: cannot update user in mongoose

本文关键字:用户 更新 服务器 内部 错误      更新时间:2023-09-26

我正在尝试运行一个 put 函数来更新我的 mongoDB 中的用户,但我收到 500 内部服务错误。我正在使用角度全栈生成器

我在控制器中使用此资源:

  update(User) {
    User.$update();
  }

以下是我在后端调用的函数,以尝试放置一切似乎都正常工作,除了当我调用 saveUpdate 时,这似乎触发了 500 错误。

function handleError(res, statusCode) {
  statusCode = statusCode || 500;
  return function(err) {
    res.status(statusCode).send(err);
  };
}
// this seems to be the function giving me the problem. 
function saveUpdates(updates) {
  return function(entity) {
    var updated = _.merge(entity, updates);
    return updated.saveAsync()
      .spread(updated => {
        return updated;
      });
  };
}
function respondWithResult(res, statusCode) {
  statusCode = statusCode || 200;
  return function(entity) {
    if (entity) {
      res.status(statusCode).json(entity);
    }
  };
}
function handleEntityNotFound(res) {
  return function(entity) {
    if (!entity) {
      res.status(404).end();
      return null;
    }
    return entity;
  };
}
export function updateUser(req, res) {
  if (req.body._id) {
    delete req.body._id;
  }
User.findByIdAndUpdate(req.params.id)
    .then(handleEntityNotFound(res))
    .then(saveUpdates(req.body))
    .then(respondWithResult(res))
    .catch(handleError(res));
    }

我尝试遵循此页面上针对角度全堆栈的建议,例如将._merge更改为._extend无济于事。

我回答了我的问题:

角度满栈使用 lodash,所以如果你想使用这样的._merge发出 put 请求:

function saveUpdates(updates) {
  return function(entity) {
    var updated = _.merge(entity, updates);
    return updated.saveAsync()
      .spread(updated => {
        return updated;
      });
  };
}

然后,您需要将 Lodash 导入由 Angular-Full Stack Yeoman 生成器设置的 User.contoller 中。

import _ from 'lodash';
相关文章: