mongoose でオブジェクトを更新する 2 つの方法

小云云
リリース: 2017-12-20 09:23:34
オリジナル
2142 人が閲覧しました

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の仮想フィールドクエリ実装方法の詳細な説明

MongooseのインストールとNode.jsでの使い方 MongoDBの基本チュートリアル_node.js

Node.js MongoDBドライバー Mongooseの基本的な使い方チュートリアル_node.js

以上がmongoose でオブジェクトを更新する 2 つの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!