我对以下功能有疑问
export function updateLine(req: Request, res: Response) {
if (!req.params.id || !req.body) return res.status(400).send({ message: 'Client has not sent params' });
Line.findByIdAndUpdate(req.params.id, req.body, async (err, lineUpdated) => {
console.log("req.params.id", req.params.id)
console.log("lineUpdated", lineUpdated)
console.log("req.body", req.body)
if (err) return res.status(409).send({ message: 'Internal error, probably error with params' });
if (!lineUpdated) return res.status(404).send({ message: 'Document not found' });
if (req.params.id !== lineUpdated.id) await Key.updateMany({ 'line': req.params.id }, { 'line': lineUpdated._id }).exec(err => {
if (err) return res.status(500).send({ message: 'Key Internal Server Error' });
});
return res.status(200).send({ data: lineUpdated });
});
}
我想做的就是用包含req.params.id
的内容更新文档req.body
对显示的console.log()的响应如下
req.params.id ACCSEH
lineUpdated {
_id: 'ACCSEH',
name: 'Accesorios (SEH)',
started: 2020-04-21T20:25:10.395Z,
__v: 0
}
req.body { id: 'ACCSEJ', name: 'Accesorios (SEH)' }
我做错了什么?
我已经知道lineUpdated将在更改之前将函数返回给我。我的意思是,当我执行查询以查看更改时,没有任何改变
答案 0 :(得分:0)
通过ID查找和更新时,您不能在对象中为其赋予ID-您需要为其提供一个具有其他项(名称,开头,_v)的某种组合的对象。
答案 1 :(得分:0)