我一直在尝试更新其中包含产品,数量和_id的“订单”。我运行补丁后,它会返回成功,但实际上并没有任何改变。 我的API更新代码屏幕截图
Patch/Update code here. I am new so i cannot have image directly embedded
邮递员屏幕截图:在此,我使用邮递员的正文存储在对象中并对其进行修补 This is my POSTMAN api test screenshot
我的订单模型
补丁代码:
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');
答案 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})
。