欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mongoose更新對象的兩種方法示例比較

 更新時間:2017年12月19日 09:58:48   作者:黃秀杰  
最近在使用mongoose的時候發(fā)現(xiàn)了一個之前一直沒注意的知識點,下面這篇文章主要給大家介紹了關(guān)于mongoose更新對象的兩種方法,通過示例代碼將兩種方法進(jìn)行詳細(xì)的對比,以給大家更好的參考學(xué)習(xí),需要的朋友可以參考下。

前言

Mongoose是在node.js異步環(huán)境下對mongodb進(jìn)行便捷操作的對象模型工具

那么要使用它,首先你得裝上node.js和mongodb,關(guān)于mongodb的安裝和操作介紹可以參考:http://www.dbjr.com.cn/article/80296.htm

演示

描述場景

更新購物車數(shù)量與勾選狀態(tài)

業(yè)務(wù)邏輯

查詢到當(dāng)前用戶的購物車對象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相當(dāng)于

 {
 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);
 }
 // 復(fù)制對象
 _.extend(cart, req.body.cart);
 cart.save(function(err, updatedCart) {
  res.send(
  utils.json({
   data: updatedCart
  })
  );
 });
 }
);

對比

第一種代碼使用findOneAndUpdate只用了一步,更加簡潔,適用于更新的字段少且非常明確的場景

第二種先findOne再對entity進(jìn)行save操作,利用了underscore對象復(fù)制,面向整個對象操作更加靈活,適用于字段多且不確定的場景

結(jié)論

需求總是在變的,所以我一般采用第二種。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

  • npm報錯:request to httpsregistry.npm.taobao.org failed, reason certificate has expired的解決方案

    npm報錯:request to httpsregistry.npm.taobao.org 

    這篇文章主要介紹了npm報錯:request to httpsregistry.npm.taobao.org failed, reason certificate has expired的解決方案,文中有詳細(xì)的解決方案,需要的朋友可以參考下
    2024-03-03
  • Node.js報錯信息Error:?Cannot?find?module?'XXX'問題及解決

    Node.js報錯信息Error:?Cannot?find?module?'XXX'問題及解

    這篇文章主要介紹了Node.js報錯信息Error:?Cannot?find?module?'XXX'問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • koa-router路由參數(shù)和前端路由的結(jié)合詳解

    koa-router路由參數(shù)和前端路由的結(jié)合詳解

    這篇文章主要給大家介紹了關(guān)于koa-router路由參數(shù)和前端路由的結(jié)合的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用koa-router具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • nodejs使用readline逐行讀取和寫入文件的實現(xiàn)

    nodejs使用readline逐行讀取和寫入文件的實現(xiàn)

    這篇文章給大家介紹了nodejs使用readline逐行讀取和寫入文件的實現(xiàn)方法,文中通過代碼示例給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • node.js中Buffer緩沖器的原理與使用方法分析

    node.js中Buffer緩沖器的原理與使用方法分析

    這篇文章主要介紹了node.js中Buffer緩沖器的原理與使用方法,結(jié)合實例形式分析了node.js Buffer緩沖器的基本概念、原理、創(chuàng)建、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-11-11
  • Node.js調(diào)用fs.renameSync報錯(Error: EXDEV, cross-device link not permitted)

    Node.js調(diào)用fs.renameSync報錯(Error: EXDEV, cross-device link not

    這篇文章主要介紹了Node.js調(diào)用fs.renameSync報錯(Error: EXDEV, cross-device link not permitted),非常具有實用價值,需要的朋友可以參考下
    2017-12-12
  • Node.js中JavaScript操作MySQL的常用方法整理

    Node.js中JavaScript操作MySQL的常用方法整理

    這篇文章主要介紹了Node.js中JavaScript操作MySQL的常用方法整理,包括作者對使用MySQL模塊連接池時錯誤解決的一個記錄,需要的朋友可以參考下
    2016-03-03
  • 如何用nodejs給C#寫一個數(shù)據(jù)表的實體類生成工具

    如何用nodejs給C#寫一個數(shù)據(jù)表的實體類生成工具

    這篇文章主要介紹了如何用nodejs給C#寫一個數(shù)據(jù)表的實體類生成工具,對nodejs感興趣的同學(xué),可以參考下
    2021-05-05
  • 最新評論