ホームページ  >  記事  >  ウェブフロントエンド  >  mongoose でのオブジェクトの更新に関する詳細な紹介があります。

mongoose でのオブジェクトの更新に関する詳細な紹介があります。

亚连
亚连オリジナル
2018-06-19 17:35:551425ブラウズ

最近、mongoose を使用する際に、これまで気にしていなかった知識点を発見しました。次の記事では、主に mongoose でオブジェクトを更新する 2 つの方法を、サンプル コードを通じて詳細に比較して紹介します。困っている友達が参考にすることができます。

はじめに

Mongooseは、node.js非同期環境でmongodbを便利に操作するためのオブジェクトモデルツールです

そのため、それを使用するには、まずnode.jsとmongodbをインストールする必要があります。 mongodb 操作の紹介については、//www.jb51.net/article/80296.htm を参照してください。 status

ビジネスロジック

現在のユーザーのショッピングカートオブジェクト 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 番目のメソッドは最初に findsOne を実行し、次にエンティティに対する操作を実行します。保存操作ではアンダースコア オブジェクトのコピーが使用されます。これにより、オブジェクト全体の操作がより柔軟になり、多くの不確実なフィールドを含むシナリオに適しています

結論要件は常に次のとおりです変更されるため、通常は 2 番目の方法を使用します。

上記は私があなたのためにまとめたものです。

関連記事: Angular4でHTMLの属性バインディングを実装する方法

JSを使った九九の書き方

鶏を100羽買う問題をJSで計算してみる

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。