MongoDB findOne()返回null

时间:2020-09-06 03:48:43

标签: node.js mongodb express

在server.js中,我有一条从数据库中删除特定报价的途径。


//DELETE
app.delete('/quotes/:QUID', async(req, res) => {
    console.log(`DELETE ROUTE GOT HIT WITH ${req.params.QUID}`)
    let query = {
        "UID": req.params.QUID
    }
    const cursor = await collection.findOne(query, (err, result) => {
        console.log(`Error is ${err}`)
        console.log(` Result is ${result}`)
    })
    await collection.deleteOne({"UID": req.params.QUID})
    res.send(cursor);
})

当路线被击中时,我发送报价ID以在路线中删除。下面是数据库中数据的结构。

_id: ObjectId("5f531a3ce52e9f3bc6c3b21c"), 
UID: 996779
name: "Neel Patel"
quote: "Yolo"

但是,一旦路由被命中,即使数据库中存在具有该特定UID的文档,它也会返回null。下面是console.log()输出。

Listening on port 3000
Connection successful!
DELETE ROUTE GOT HIT WITH 996779
Error is null
Result is null

我不确定是什么问题。首先,我认为这必须与功能保持异步,因此我在(req,res)函数之前添加了async,但问题仍然存在。

1 个答案:

答案 0 :(得分:1)

问题出在我的查询中。路由中的QUID被读取为字符串,但我需要将其作为Integer。所以我如下修改了查询:

let query = {
        "UID": parseInt(req.params.QUID)
    }