特定路由没有记录时如何获取json错误

问题描述 投票:0回答:1

我正在尝试构建一个用于发布和插入数据的 API。因此我可以将数据发布到发布端点,从数据库获取所有数据,并使用 id 从特定行获取特定数据。我希望当我尝试查询一个不存在的ID时返回这样的json

[
    {
        "error": "no record found in DB"
    }
]

这是我正在使用的代码

app.get('/users/:id',async(req,res)=>{
    try {
        const id = req.params.id
        
        conn = await pool.getConnection()
        const result = await conn.query("select * from info where id=?",id)
        if(!result){
            res.json({
                "error":"no such record in database"
            })
        }else{
            res.send(result)
        }
        
    } catch (error) {
        res.send(error)
    }
})

我尝试在块内使用 if 语句,希望如果查询没有返回任何内容,它会执行,而是返回一个空的 json

node.js express mariadb backend
1个回答
0
投票

connection.query()
不会返回任何可能被 视为“虚假” 的内容;因此,你的逻辑永远不会进入用简单的
if(!result)
表达式门控的逻辑分支。

相反,您应该期望成功的查询(可能返回 0 或更多行,但否则已成功执行)返回一个 Array

result-set
。改为测试返回结果集的长度:

if (result.length === 0) { // ...
© www.soinside.com 2019 - 2024. All rights reserved.