两种mongoose更新对象的方法
程序员文章站
2022-05-17 20:42:18
...
Mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具最近在使用mongoose的时候发现了一个之前一直没注意的知识点,本文主要给大家介绍了关于mongoose更新对象的两种方法,通过示例代码将两种方法进行详细的对比,以给大家更好的参考学习,需要的朋友可以参考下。希望能帮助到大家。
那么要使用它,首先你得装上node.js和mongodb,关于mongodb的安装和操作介绍可以参考:
描述场景
更新购物车数量与勾选状态
业务逻辑
查询到当前用户的购物车对象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对象复制,面向整个对象操作更加灵活,适用于字段多且不确定的场景
结论
需求总是在变的,所以我一般采用第二种。
相关推荐:
安装使用Mongoose配合Node.js操作MongoDB的基础教程_node.js
Node.js的MongoDB驱动Mongoose基本使用教程_node.js
以上就是两种mongoose更新对象的方法的详细内容,更多请关注其它相关文章!
上一篇: php编程每天必学之表单验证_PHP
下一篇: 九、mysql触发器的概念_MySQL
推荐阅读
-
详解Yii实现分页的两种方法
-
基于java中byte数组与int类型的转换(两种方法)
-
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
-
Java中Json字符串直接转换为对象的方法(包括多层List集合)
-
php使用json_decode后数字对象转换成了科学计数法的解决方法
-
浅谈PHP中的面向对象OOP中的魔术方法
-
Java反射之通过反射获取一个对象的方法信息(实例代码)
-
Java中分割字符串的两种方法实例详解
-
用Java集合中的Collections.sort方法如何对list排序(两种方法)
-
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)