router.delete возвращает пустой массив - PullRequest
1 голос
/ 10 января 2020

Я пытаюсь добавить функцию, которая удаляет запись в MongoDB по идентификатору, но в результате я получаю пустой массив, и запись не удаляется.

Вот мой код, так далеко:

//router
router.delete('/comandas/:id', (req, res) => {
  deleteLine(req.params.id)
  res.status(500).end()
  });
});
//delete function
const objectId = require('mongodb').ObjectID;

const init = () =>
  MongoClient.connect(connectionUrl, { useNewUrlParser: true, useUnifiedTopology: true }).then((client) => {
    db = client.db(dbName)
  })

const deleteLine = (id) => {
  const collection = db.collection('comanda')
  return collection.deleteOne({"_id": objectId(id)})
}

Ответы [ 2 ]

1 голос
/ 10 января 2020

Вы возвращаете обещание в функции deleteLine, в вашем маршрутизаторе, чтобы фактически запустить его, вам нужно добавить, а затем заблокировать, как это:

  deleteLine(req.params.id).then(result => {
    console.log(result);    
    //todo: send response
  })
  .catch(err => {
    console.log(err);
      //todo: send error response
  })
0 голосов
/ 10 января 2020

Я нашел другой способ решить эту проблему, вместо этого вызвав методы get:

router.get('/comandas/:id/delete', (req, res) => {
   deleteLine(req.params.id)
  .then( () => {
    console.log(req.params.id + ' deleted')
    res.status(500).end()
  })
  .catch((err) => {
    console.log(err)
    res.status(500).end()
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...