You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js Express的app.get中捕获错误,无数据时返回null?

问题解决:查询不存在的数据时返回null而非报错

问题原因

当数据库中没有匹配的数据时,db.query返回的result是空数组,此时直接访问result[0].email会因为result[0]是undefined触发TypeError,导致服务器抛出错误。另外原代码未处理数据库查询本身可能出现的错误(比如连接异常、SQL语法错误)。

修复方案

修改代码,先处理查询错误,再判断是否查询到数据:

const express = require('express');
const app = express();
const mysql = require('mysql');

// 补充数据库连接实例(原代码中db变量未定义)
const db = mysql.createConnection({
  host: '你的数据库地址',
  user: '数据库用户名',
  password: '数据库密码',
  database: '目标数据库名'
});

// 建立数据库连接
db.connect((err) => {
  if (err) throw err;
  console.log('数据库连接成功');
});

app.use(express.json());

app.get('/api/get',(req,res)=>{
    const sql = "SELECT * FROM user WHERE email = 'not_exist';"
    db.query(sql,(err, result)=>{
        // 优先处理数据库查询错误
        if (err) {
            return res.status(500).send({ error: '数据库查询失败' });
        }
        // 判断是否查询到数据,无数据时返回null
        if (result.length === 0) {
            return res.send(null);
        }
        // 查询到数据时正常返回结果
        console.log(result[0].email);
        res.send(result);
    })
})

app.listen(3001, ()=>{
    console.log('The server has started');
});

关键修改点

  • 补充了缺失的数据库连接创建代码,解决原代码中db未定义的问题
  • 增加数据库查询错误处理逻辑,避免因数据库问题导致服务器崩溃
  • 通过result.length判断是否存在数据,为空时返回null
  • 用return终止后续代码执行,避免重复发送响应

内容的提问来源于stack exchange,提问作者kwak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 14:10:47