0

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 スタックに関するこのページの推奨事項に従ってみました。

4

1 に答える 1

1

私は私の質問に答えました:

Angular-full スタックは lodash を使用するため、次のように ._merge を使用して put リクエストを作成する場合:

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

次に、angular-fullstack yeoman ジェネレーターによって設定された user.contoller に lodash をインポートする必要があります。

import _ from 'lodash';
于 2016-02-23T21:55:57.433 に答える