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));
}
._merge を ._extend に変更して役に立たないなど、angular-full スタックに関するこのページの推奨事項に従ってみました。