【发布时间】:2020-05-07 03:42:30
【问题描述】:
我对以下功能有疑问
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.body的内容更新文档req.params.id
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 会在更改之前将函数返回给我。我的意思是当我进行查询以查看更改时,什么都没有改变
【问题讨论】:
-
您要更新
_id吗? -
@TheeSritabtim 是的
-
1.正文指定了
id,但您不想更新_id。 2.即使正文正确,您也无法更新_id,如答案中所述,因为它用作主键并且是不可变的 -
嗯好的顺便说一句。例如,如果我将 _id 更改为 idk 标识符,我该如何参考。如何引用用户架构中的标识符部分@TheeSritabtim
-
对不起,我不太明白你的意思。你能举一个更具体的例子吗?
标签: javascript mongodb typescript mongoose