猫鼬在node.js中查找和更新单个子文档

时间:2020-07-21 11:38:10

标签: node.js mongodb express mongoose

我有一个这样的架构

const UserSchema = new Schema(
  {
    name: {
      type: String,
      required: true
    },
    payment:[{
      description: {
        type:String
      },
      amount:{
        type:String
      },
      paid:{
        type:Boolean,
        default:false
      }
    }]
  },
  { timestamps: true }
);

所以在这里,在付款子凭证中,我有多个条目。如何通过ID查找和更改此子文档的单个文档。是否存在任何功能User.payment.findbyID()?请帮帮我。我想为一个文档更新 User.payment.paid == true 。我正在使用express.js

我做了一个愚蠢的尝试,而我尝试时却没有道理:

exports.ConfirmPayment= async(req,res)=>{
  let payment
  try{
    payment= await User.findById(req.params.id).payment
    ConfirmPayment = await payment.findById(req.params.paymentId)
    ConfirmPayment.paid==true
    await ConfirmPayment.save()
    await payment.save()
    res.status(200).json(ConfirmPayment)
  }catch(err) {
    console.log(err)
  }

};

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。我尝试过滤查询,它起作用了。这是我的解决方案:

    const paymentDB = user.payment.filter( (payment)=> {
      return payment.amount === req.params.amount;
    }).pop();
    paymentDB.paid=true;
    await user.save()