500 Internal Server Error: cannot update user in mongoose
500 Internal Server Error: cannot update user in mongoose
我正在尝试 运行 一个 put 函数来更新我的 mongoDB 中的用户,但我收到 500 内部服务错误。我正在使用 angular-fullstack 生成器
我在我的控制器中使用这个资源:
update(User) {
User.$update();
}
以下是我在后端调用的函数,用于尝试放置数据一切似乎都运行良好,除了我调用 saveUpdates 时,它似乎触发了 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));
}
我已经尝试按照 this 页面上的建议进行 angular-full 堆栈,例如将 ._merge 更改为 ._extend 无济于事。
我回答了我的问题:
Angular-全栈利用 lodash,所以如果你想像这样使用 ._merge 发出放置请求:
function saveUpdates(updates) {
return function(entity) {
var updated = _.merge(entity, updates);
return updated.saveAsync()
.spread(updated => {
return updated;
});
};
}
然后你需要将 lodash 导入到 angular-fullstack yeoman 生成器设置的 user.contoller 中。
import _ from 'lodash';
我正在尝试 运行 一个 put 函数来更新我的 mongoDB 中的用户,但我收到 500 内部服务错误。我正在使用 angular-fullstack 生成器
我在我的控制器中使用这个资源:
update(User) {
User.$update();
}
以下是我在后端调用的函数,用于尝试放置数据一切似乎都运行良好,除了我调用 saveUpdates 时,它似乎触发了 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));
}
我已经尝试按照 this 页面上的建议进行 angular-full 堆栈,例如将 ._merge 更改为 ._extend 无济于事。
我回答了我的问题:
Angular-全栈利用 lodash,所以如果你想像这样使用 ._merge 发出放置请求:
function saveUpdates(updates) {
return function(entity) {
var updated = _.merge(entity, updates);
return updated.saveAsync()
.spread(updated => {
return updated;
});
};
}
然后你需要将 lodash 导入到 angular-fullstack yeoman 生成器设置的 user.contoller 中。
import _ from 'lodash';