mongoose更新对象的两种方法示例比较
程序员文章站
2022-11-29 20:48:01
前言
mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具
那么要使用它,首先你得装上node.js和mongodb,关于mongod...
前言
mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具
那么要使用它,首先你得装上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对象复制,面向整个对象操作更加灵活,适用于字段多且不确定的场景
结论
需求总是在变的,所以我一般采用第二种。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
上一篇: 浅谈ASP.NET配置文件加密
下一篇: 基于JavaSE阶段下的集合类汇总