mongoose更新对象的两种方法示例比较

网友投稿 482 2023-03-05


mongoose更新对象的两种方法示例比较

前言

Mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具

那么要使用它,首先你得装上node.js和mongodb,关于mongodb的安装和操RgaMGLBtc作介绍可以参考://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'), {

neRgaMGLBtcw: 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对象复制,面向整个对象操作更加灵活,适用于字段多且不确定的场景

结论

需求总是在变的,所以我一般采用第二种。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:短信平台接口开发(短信平台开发搭建)
下一篇:在线文档api管理有哪些(在线文档api管理有哪些类型)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~