Удаление Express Router с помощью mongoose не работает по синтаксису ES8 - PullRequest
2 голосов
/ 30 марта 2019

У меня был этот код:

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 году, я подумал, что мне следует перейти к синтаксису асинхронного ожидания / ожидания, и я сделал это:

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 });
  }
});

идентификатор получен, как и ожидалось, но по какой-то причине input.findById возвращает ноль, кто-нибудь знает почему?

1 Ответ

2 голосов
/ 30 марта 2019

Вы следите за Input с const Input до findById.Используйте для него другое имя (даже просто нижний регистр достаточно хорош; помните, изначально ограниченные идентификаторы предназначены главным образом для функций конструктора, а не для неструктурных объектов):

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 });
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...