首頁 > web前端 > js教程 > 主體

在mongoose中有關於更新物件的詳細介紹

亚连
發布: 2018-06-19 17:35:55
原創
1470 人瀏覽過

最近在使用mongoose的時候發現了一個之前一直沒注意的知識點,下面這篇文章主要給大家介紹了關於mongoose更新物件的兩種方法,透過範例程式碼將兩種方法進行詳細的對比,以給大家更好的參考學習,需要的朋友可以參考下。

前言

Mongoose是在node.js非同步環境下對mongodb進行便捷操作的物件模型工具

那麼要使用它,首先你得裝上node.js和mongodb,關於mongodb的安裝和操作介紹可以參考://www.jb51.net/article/80296.htm

#示範

描述場景

##更新購物車數量與勾選狀態

業務邏輯

查詢到目前使用者的購物車物件Cart,更新前端傳遞過來的quantity與selected欄位

方法一

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
 }
登入後複製

方法二

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只用了一步,更簡潔,適用於更新的字段少且非常明確的場景

第二種先findOne再對entity進行save操作,利用了underscore物件複製,面向整個物件操作更加靈活,適用於字段多且不確定的場景

結論

需求總是會變的,所以我通常會採用第二種。

上面是我整理給大家的,希望今後對大家有幫助。

相關文章:

在Angular4如何實作HTML屬性綁定

使用JS如何寫的九九乘法表

使用JS計算買100隻雞問題

以上是在mongoose中有關於更新物件的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板