时间:2021-07-01 10:21:17 帮助过:37人阅读
前言
Mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具
那么要使用它,首先你得装上node.js和mongodb,关于mongodb的安装和操作介绍可以参考://www.gxlcms.com/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中有关于更新对象的详细介绍的详细内容,更多请关注Gxl网其它相关文章!