2012-05-11 5 views
4

私は、保存用にmongoDb(mongoose経由)に依存しているExpress/NodeJsバックエンドでバックボーンアプリを書いています。レコードを適切な方法で更新するには?

時間がデータベースのレコードを更新するようになり、壁に当たっています。

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

私が更新を防ぐエラーが、私は非修正「_id」1を含むすべてのフィールドを、渡しています事実によるものであることを理解しています。

私が求めているのは、すべてのフィールドを更新メソッドに渡す方法はありますか、または を1つずつ指定する必要がありますか(またはすべてを繰り返す必要がありますか)。

ご協力いただきありがとうございます。

答えて

2

あなたはあなただけ更新するのではなく、アップサートできmodel.update()

+0

あまりにも良いアドバイスです。ありがとう。 – CarmineM74

2

に渡す前に_idを削除することができます。

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

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

私のアドバイスは、あなたがreq.bodyから必要なものだけを取得して更新することです。

var updateData = { 
    name: req.body.name 
}; 
User.update({_id: user._id},updateData, function(err,affected) { 
    console.log('affected rows %d', affected); 
}); 
+0

Upsertポインタのためにブルーノさんに感謝します!完全に私の目の前から滑り落ちた。おそらく、最終的には、バックボーン側の「ダーティー・フィールド・トラッキング」によって、第2のルートに行く方が良いでしょう。 – CarmineM74

関連する問題