最近、mongoose を使用する際に、これまで気にしていなかった知識点を発見しました。次の記事では、主に mongoose でオブジェクトを更新する 2 つの方法を、サンプル コードを通じて詳細に比較して紹介します。困っている友達が参考にすることができます。
はじめに
Mongooseは、node.js非同期環境でmongodbを便利に操作するためのオブジェクトモデルツールです
そのため、それを使用するには、まずnode.jsとmongodbをインストールする必要があります。 mongodb 操作の紹介については、//www.jb51.net/article/80296.htm を参照してください。 status
ビジネスロジック
現在のユーザーのショッピングカートオブジェクト Cart をクエリし、フロントエンドによって渡された数量と選択されたフィールドを更新します
メソッド 1var _ = require('underscore');
Cart.findOneAndUpdate({
_id: req.body.cart._id,
user: user
}, _.pick(req.body.cart, 'quantity', 'selected'), {
new: true
},
function(err, updatedCart) {
res.send(
utils.json({
data: updatedCart
})
);
}
);
{ quantity: req.body.cart.quantity, selected: req.body.cart.selected }
var _ = require('underscore'); Cart.findOne({ _id: req.body.cart._id, user: user }, function(err, cart) { if (err) { console.log(err); } // 复制对象 _.extend(cart, req.body.cart); cart.save(function(err, updatedCart) { res.send( utils.json({ data: updatedCart }) ); }); } );
比較
最初のコードは、findOneAndUpdate を 1 ステップのみで使用します。これはより簡潔で、更新されるフィールドが少なく、非常に明確であるシナリオに適しています 2 番目のメソッドは最初に findsOne を実行し、次にエンティティに対する操作を実行します。保存操作ではアンダースコア オブジェクトのコピーが使用されます。これにより、オブジェクト全体の操作がより柔軟になり、多くの不確実なフィールドを含むシナリオに適しています
結論要件は常に次のとおりです変更されるため、通常は 2 番目の方法を使用します。
上記は私があなたのためにまとめたものです。関連記事: Angular4でHTMLの属性バインディングを実装する方法
JSを使った九九の書き方
鶏を100羽買う問題をJSで計算してみる
以上がmongoose でのオブジェクトの更新に関する詳細な紹介があります。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。