当前位置:Gxlcms > JavaScript > 在mongoose中有关于更新对象的详细介绍

在mongoose中有关于更新对象的详细介绍

时间:2021-07-01 10:21:17 帮助过:37人阅读

最近在使用mongoose的时候发现了一个之前一直没注意的知识点,下面这篇文章主要给大家介绍了关于mongoose更新对象的两种方法,通过示例代码将两种方法进行详细的对比,以给大家更好的参考学习,需要的朋友可以参考下。

前言

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

那么要使用它,首先你得装上node.js和mongodb,关于mongodb的安装和操作介绍可以参考://www.gxlcms.com/article/80296.htm

演示

描述场景

更新购物车数量与勾选状态

业务逻辑

查询到当前用户的购物车对象Cart,更新前端传递过来的quantity与selected字段

方法一

  1. var _ = require('underscore');
  2. Cart.findOneAndUpdate({
  3. _id: req.body.cart._id,
  4. user: user
  5. }, _.pick(req.body.cart, 'quantity', 'selected'), {
  6. new: true
  7. },
  8. function(err, updatedCart) {
  9. res.send(
  10. utils.json({
  11. data: updatedCart
  12. })
  13. );
  14. }
  15. );

注:_.pick相当于

  1. {
  2. quantity: req.body.cart.quantity,
  3. selected: req.body.cart.selected
  4. }

方法二

  1. var _ = require('underscore');
  2. Cart.findOne({
  3. _id: req.body.cart._id,
  4. user: user
  5. }, function(err, cart) {
  6. if (err) {
  7. console.log(err);
  8. }
  9. // 复制对象
  10. _.extend(cart, req.body.cart);
  11. cart.save(function(err, updatedCart) {
  12. res.send(
  13. utils.json({
  14. data: updatedCart
  15. })
  16. );
  17. });
  18. }
  19. );

对比

第一种代码使用findOneAndUpdate只用了一步,更加简洁,适用于更新的字段少且非常明确的场景

第二种先findOne再对entity进行save操作,利用了underscore对象复制,面向整个对象操作更加灵活,适用于字段多且不确定的场景

结论

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

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

在Angular4中如何实现HTML属性绑定

使用JS如何编写的九九乘法表

使用JS计算买100只鸡问题

以上就是在mongoose中有关于更新对象的详细介绍的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行