【问题标题】:Mongoose: Update by pushing an object in an arrayMongoose:通过将对象推送到数组中来更新
【发布时间】:2017-07-03 23:14:52
【问题描述】:

这是我正在使用的模型:

name: {
  type: String
},
payment: {
  id: {
    type: String,
    required: true
  },
  cards: [
    {
      id: {
        type: String
      },
      is_default: {
        type: Boolean,
        "default": false
      }
    }
  ]
}

我想在cards数组中添加一张卡片,例如:

card =
  id: "some_token"
  is_default: true

我正在使用update 方法将卡片推送到数组中,但它不会将卡片添加到文档中。相反,它会创建一个仅包含这些字段的新文档:

{
  id: "some_token",
  is_default: true,
  _id: someId
}

知道如何更新我所针对的实际文档而不是创建新文档吗?

这是我的代码(使用 CoffeeScript):

update_where =
  payment:
    id: "some_id"
update_push =
  $push:
    'payment.cards':
      id: card_token
      is_default: false

Customer.update update_where, update_push, {upsert: true}, (err, results) ->
  # Do something with the results

【问题讨论】:

    标签: arrays mongoose


    【解决方案1】:

    哦……我刚刚注意到我的错误。问题出在 where 语句中。 我在做:

    payment:
      id: "some_id"
    

    但正确的写法如下:

    'payment.id': 'some_id'
    

    现在可以了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-08
      • 2018-07-20
      • 1970-01-01
      • 2020-04-02
      相关资源
      最近更新 更多