NodeJs和Mongodb:无法更新(补丁)。返回成功,但不更改任何内容

时间:2019-05-02 16:12:49

标签: node.js mongodb express mongoose mongodb-query

我一直在尝试更新其中包含产品,数量和_id的“订单”。我运行补丁后,它会返回成功,但实际上并没有任何改变。 我的API更新代码屏幕截图

Patch/Update code here. I am new so i cannot have image directly embedded

邮递员屏幕截图:在此,我使用邮递员的正文存储在对象中并对其进行修补 This is my POSTMAN api test screenshot

我的订单模型

Model of Orders

  

补丁代码:

router.patch('/:id',(req,res)=>{
  var update = {};
  for(var up of req.body)
  {
    update[up.new]=up.value
  }
  console.log(update )
  Product.update({_id:req.params.id},{$set:update})
    .exec()
    .then(result=>{
    res.status(200).json(
      {
        Message:'Product Updated',
        Request:{
          type:'GET',
          url:'http://localhost:5000/orders/'+req.params.id
        }
      }
    )
  })
    .catch(err=>{
    res.status(500).json(err)
    console.log(err)
  })
})
  

型号代码

var express = require('express') var mongoose = require('mongoose'); 
var orderSchema = mongoose.Schema({
  _id:mongoose.Schema.Types.ObjectId,
  product:{type:String, required:'true'},
  quantity:{type:Number,default:1}
})

module.exports = mongoose.model('Order',orderSchema,'Order');

1 个答案:

答案 0 :(得分:0)

首先,您不必在mongoose模式中指定_id,MongoDB还会自动为您创建_id并带有版本索引。问题可能仅来自此。

如果它返回成功但不影响任何条目,则意味着首先没有找到条目。执行function getProducts(params) { return params.productQuantities .map(prod => ({ purchaseOrderLine: null, haulerCostCode: getOrderLine(params, prod).haulCostCode, productCostCode: getOrderLine(params, prod).productCostCode, typeOfWork: getOrderLine(params, prod).productCostCode, })) .reduce((accumulator, currentValue) => { accumulator.push(currentValue); return accumulator; }, []); } function getOrderLine(params, ticketLine) { return params.orderDetail.order.orderLineItems .find(orderLine => orderLine.id == ticketLine.id); } 时找不到模型。也许尝试:Product.update({_id:req.params.id},{$set:update})