当前位置: 首页 > 知识库问答 >
问题:

cart.save()不是用于更新文档的函数

益银龙
2023-03-14
export const addToCart = asyncHandler(async (req, res) => {
  const { cartItems } = req.body
  if (cartItems && cartItems.length === 0) {
    res.status(400)
    throw new Error("No item in the cart")
  } else {
    const cart = await Cart.find({ user: req.user._id })
    if (cart && cart.length !== 0) {
      cart.cartItems = [...cartItems]

      const updatedCart = await cart.save()
      res.status(201)
      res.json(updatedCart)
    } else {
      const newCart = new Cart({
        user: req.user._id,
        cartItems,
      })
      const updatedCart = await newCart.save()
      res.status(201)
      res.json(updatedCart)
    }
  }
})

当我尝试使用以下对象更新它时

{
    "cartItems":[
        {
            "name":"Ring",
            "qty":"1",
            "image":"ring-image",
            "price":"160",
            "countInStock": 5,
            "product": "60ff8222ce6dca3378449b93"
        },{
            "name":"Wallet",
            "qty":"2",
            "image":"wallet-image",
            "price":"40",
            "countInStock": 16,
            "product": "60ff8222ce6dca3378449b93"
        }
    ]
}

它给我的错误是cart.save()不是函数。我不知道我做错了什么,因为newcart.save()运行良好,但是,为什么cart.save()会引发错误?

共有1个答案

盛琪
2023-03-14

错误是,当我们使用user._id在购物车中查找时,它返回一个数组,所以如果我们更改

const cart = await Cart.find({ user: req.user._id })

const cart = (await Cart.find({ user: req.user._id }))[0]

那么它很好用

 类似资料:
  • 但是,我还没有想好如何使用solrj API来实现这一点。 有没有人知道用Solrj是否可能?还是solrj没有跟上这个功能的速度? 更新:正如我在邮件列表中所描述的(参见这里的回复),我发现在solrj api中,SolrInputField的值可以是一个映射--它不一定必须是一个简单的标量值。如果它是一个映射,solrj会向字段的xml元素添加一个额外的属性。例如,以下代码: 在这个例子中,我

  • 更新文档操作既可以完全覆盖现存文档全部字段,又可以部分更新字段(更改现存字段,或添加新字段)。 部分更新 如果你要部分更新文档(如更改现存字段,或添加新字段),你可以在 body 参数中指定一个 doc 参数。这样 doc 参数内的字段会与现存字段进行合并。 $params = [ 'index' => 'my_index', 'type' => 'my_type', 'i

  • 问题内容: 下面是我的代码 我的mongo数据库中已经有一些记录,我想运行此代码来更新年龄为17岁的姓名,然后在代码末尾打印结果。 但是,为什么我仍然从控制台获得相同的结果(而不是修改后的名称),但是当我转到mongo db命令行并键入“ ”时。结果带有修改后的名称。 然后,我再次运行该代码,并修改了结果。 我的问题是:如果修改了数据,那么为什么在console.log时还是第一次获得原始数据。

  • 对于一个Box2D组合,我需要这段代码来避免无意中的点击: null null 目前,它适用于整个文档。但我希望它仅适用于 。 怎么可能编码呢? 会非常感谢你的帮助!

  • 主要内容:update() 方法,save() 方法在 MongoDB 中,可以使用 update() 和 save() 方法来更新集合中的文档。其中 update() 方法可以更新现有文档中的值,而 save() 方法则可以使用传入文档来替换已有文档。 update() 方法 update() 方法用于更新现有文档中的值,其语法格式如下: db.collection_name.update(     <query>,     <update>,

  • 问题内容: 该代码按预期工作。但是,我不想更新第三个国家作为另一个文档,而是要更新第一个文档。 这样,文档ID 1将有3个国家:印度,中国和巴基斯坦。我想我需要使用doc_as_upsert参数更新API。但是我不确定如何编写JSON。 问题答案: 您可以使用update API 进行脚本更新: 更新 如果要在批量查询中使用它,也可以