4

ストレージ用にmongoDb(mongoose経由)に依存するExpress/NodeJsバックエンドを備えたバックボーンアプリを作成しています。

データベースのレコードを更新する時が来ましたが、私は壁にぶつかっています。

私が書いたコードは次のとおりです。https://gist.github.com/b90130f640cea75b0cbd

更新を妨げるエラーは、変更不可能な「_id」フィールドを含むすべてのフィールドを渡しているという事実によるものであることを理解しています。

私が求めているのは、すべてのフィールドを update メソッドに渡す方法はありますか、またはそれらを 1 つずつ指定する (またはすべてを反復処理する) 必要があるかどうかです。

よろしくお願いします。

4

2 に答える 2

2

に渡す前に_idを削除できますmodel.update()

于 2012-05-11T23:47:19.550 に答える
2

update の代わりに upsert を実行できます。

new User(req.body).save();

とにかく、 req.body が正しいデータを持つことを除いて、モデルの状態によってはセキュリティの問題が発生する可能性があります (GitHub には最近このような問題がありました)。

私のアドバイスは、req.body と update から必要なものだけを取得することです。

var updateData = {
  name: req.body.name
};
User.update({_id: user._id},updateData, function(err,affected) {
  console.log('affected rows %d', affected);
});
于 2012-05-12T00:04:58.653 に答える