gpt4 book ai didi

javascript - Express Router delete with mongoose 不适用于 ES8 语法

转载 作者:行者123 更新时间:2023-11-29 20:41:22 25 4
gpt4 key购买 nike

我有这段代码:

router.delete('/:id', (req, res) => {
Input.findById(req.params.id)
.then(Input => Input.remove().then(() => res.json({ success: true })))
.catch(err => res.status(404).json({ success: false }));
});

自从我们进入 2019 年以来,我认为我应该继续使用 async/await 语法,我这样做了:

router.delete('/:id', async ({ params }, res) => {
try {
const Input = await Input.findById(params.id);
await Input.remove();
res.json({ success: true });
} catch (error) {
res.status(404).json({ success: false });
}
});

ID 按预期收到,但由于某些原因 input.findById 返回 null,有人知道为什么吗?

最佳答案

您在 findById 之前使用 const Input 隐藏 Input。为它使用不同的名称(即使只是小写就足够了;请记住,初始上限标识符主要用于构造函数,而不是非构造函数对象):

router.delete('/:id', async ({ params }, res) => {
try {
const input = await Input.findById(params.id);
// ^-------------------------------------------- here
await input.remove();
// ^-------------------------------------------- and here
res.json({ success: true });
} catch (error) {
res.status(404).json({ success: false });
}
});

顺便说一句,如果你愿意,你可以进行嵌套解构来挑选出 id:

router.delete('/:id', async ({params: {id}}, res) => {
// ^^^^^^^^^^^^^^======================
try {
const input = await Input.findById(id);
// ^=========================
await input.remove();
res.json({ success: true });
} catch (error) {
res.status(404).json({ success: false });
}
});

关于javascript - Express Router delete with mongoose 不适用于 ES8 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55432737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com