首页 > 解决方案 > router.delete 返回空数组

问题描述

我正在尝试添加一个函数,该函数通过 id 删除 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)})
}

标签: javascriptnode.jsmongodbexpress

解决方案


您在 deleteLine 函数中返回一个承诺,在您的路由器中实际运行它需要像这样添加然后阻止:

  deleteLine(req.params.id).then(result => {
    console.log(result);    
    //todo: send response
  })
  .catch(err => {
    console.log(err);
      //todo: send error response
  })

推荐阅读