Mongoose は、node.js の非同期環境で mongodb 上で便利な操作を実行するオブジェクト モデル ツールです。最近、mongoose を使用する際に、これまで注目していなかった知識点を発見しました。この記事では、主に 2 つの方法を紹介します。 mongoose でオブジェクトを更新する場合、サンプル コードを通じて 2 つの方法を詳細に比較し、必要な友人が参照できるようにします。皆さんのお役に立てれば幸いです。
したがって、それを使用するには、まずnode.jsとmongodbをインストールする必要があります。mongodbのインストールと操作の概要については、次を参照してください:
シナリオを説明します
ショッピングカートの数量を更新して確認します。ステータス
ビジネスロジック
現在のユーザーのショッピングカートオブジェクトCartをクエリし、フロントエンドによって渡された数量と選択されたフィールドを更新します
メソッド1
var _ = 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 }) ); } );
注: _.pickは
{ quantity: req.body.cart.quantity, selected: req.body.cart.selected }
メソッド2
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 番目の方法では、最初に findOne を実行してからエンティティを保存します。これは、アンダースコア オブジェクトのコピーを使用します。これにより、オブジェクト操作全体がより柔軟になり、多くのフィールドや不確実性のあるシナリオに適したものになります
結論
要件は常に変化するため、私は通常 2 番目のオプションを使用します。
関連する推奨事項:
以上がmongoose でオブジェクトを更新する 2 つの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。