【发布时间】:2020-03-31 09:23:07
【问题描述】:
我正在尝试用 其他一些列名而不是 ObjectID 来更新记录,但它不起作用。如何解决这个问题?
router.put('/:InvoiceNo/', async (req,res)=>{
if(req.body.FlagID==2){
var InvoiceNo = parseInt(req.params.InvoiceNo);
console.log(parseInt(req.params.InvoiceNo));
var purchaseInvoice= new PurchaseInvoice({
FlagID: req.body.FlagID,
InvoiceNo: req.body.InvoiceNo,
RefNo: req.body.RefNo,
InvoiceDate: req.body.InvoiceDate,
VendorName: req.body.VendorName,
GSTNo: req.body.GSTNo,
VendorType: req.body.VendorType,
Address: req.body.Address,
State: req.body.State,
TransportMode: req.body.TransportMode,
TransportNumber: req.body.TransportNumber,
PurchaseType: req.body.PurchaseType,
DueDate: req.body.DueDate,
DeliveryNote: req.body.DeliveryNote,
Remarks: req.body.Remarks,
Materials: req.body.Materials,
Expenses: req.body.Expenses,
Commission: req.body.Commission,
Discount: req.body.Discount,
Adjustment: req.body.Adjustment,
GrandTotal: req.body.GrandTotal
});
**PurchaseInvoice.findByIdAndUpdate( {InvoiceNo : InvoiceNo} , { $set: req.body }, { useNewUrlParser: true, useFindAndModify: false }, (err, doc) => {**
if (!err) { res.send(doc); }
else { console.log('Error in Purchase Invoice Update :' + JSON.stringify(err, undefined, 2)); }
});
}
});
我正面临这个错误:
Error in Purchase Invoice Update :{
"message": "Cast to ObjectId failed for value \"{ InvoiceNo: 1001 }\" at path \"_id\" for model \"PurchaseInvoice\"",
"name": "CastError",
"stringValue": "\"{ InvoiceNo: 1001 }\"",
"kind": "ObjectId",
"value": {
"InvoiceNo": 1001
},
"path": "_id"
}
使用 ObjectID 可以正常工作,但没有 ObjectID 我想更新记录。
【问题讨论】:
标签: node.js mongodb express mongoose postman