首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用猫鼬的快速路由器删除不适用于ES8语法

使用猫鼬的快速路由器删除不适用于ES8语法
EN

Stack Overflow用户
提问于 2019-03-30 15:06:26
回答 1查看 46关注 0票数 2

我有个密码:

代码语言:javascript
复制
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年,我认为我应该继续使用异步/等待语法,我这样做了:

代码语言:javascript
复制
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,有人知道为什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-30 15:09:41

你在Input之前用const Input跟踪findById。为它使用不同的名称(即使小写也足够好;请记住,最初有上限的标识符主要用于构造函数,而不是非构造函数对象):

代码语言:javascript
复制
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

代码语言:javascript
复制
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 });
  }
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55432737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档