无法对猫鼬结果执行操作

时间:2020-06-22 16:45:54

标签: node.js mongodb mongoose

    Product
        .findAll()
        .then((products) => {
                  /* Perform operations */
               }

上面的查询返回一个产品数组。例如,

[ 
  { 
    name: Mobile,
    price: 10000
  },
  { 
    name: Laptop,
    price: 20000
  },
]

我需要对products数组进行一些更改(基于现有字段的值添加新字段,并删除那些现有字段)。我尝试了几种方法,但是都没有用:

products.forEach((product) => {
    product.[updatedPrice] = updatedPrice;
    delete product[price];
}

Array.map()也不起作用。

以下方法有效,但我不知道其背后的工作及其发生的原因。另外,如何使用该字段删除字段。

products.forEach((product) => {
    product.set('updatedPrice', updatedPrice, {strict: false})
}

1 个答案:

答案 0 :(得分:1)

这里要注意的是,在.then((products)产品对象中,这里的对象不是JSON对象,而是Mongoose Document对象,并且您使用的set方法是由mongoose定义的。您可以在这里https://mongoosejs.com/docs/guide.html#strict

引用它

我们可以做两件事:

  1. 使用lean()(返回一个普通的js对象)

    Product.findAll()。lean()。then((products)=> { / *执行操作* / });


  1. 在产品对象上使用toJSON()方法将猫鼬对象转换为js对象

    Product.findAll()。then((products)=> { 产品=产品。toJSON(); / *执行操作* / });

谢谢