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

Node.js查询数据库时,如何用if-else处理无记录场景?

SQL Server查询无记录时的if-else处理方案

首先必须提醒:你当前代码直接用${userID}拼接SQL语句存在严重的SQL注入风险,必须改用参数化查询,这是Node.js操作数据库的基础安全规范。

接下来处理无记录的判断逻辑:查询完成后,通过results.recordset.length即可判断是否返回了数据,再用if-else分支处理不同场景。

修改后的完整代码示例:

try {
    let pool = await sql.connect(config);
    // 使用参数化查询避免SQL注入,根据id实际类型调整sql.Int(比如字符串用sql.NVarChar)
    const results = await pool.request()
        .input('userID', sql.Int, userID)
        .query(`SELECT * FROM usersAPI where id = @userID`);
    
    // 判断是否存在记录并处理
    if (results.recordset.length === 0) {
        // 无匹配记录时的逻辑,比如返回提示信息
        return { status: 'empty', message: '未找到对应用户' };
    } else {
        // 有记录时返回查询结果
        return { status: 'success', data: results.recordset };
    }
} catch (error) {
    console.log(error);
    // 捕获并返回查询错误
    return { status: 'error', message: '查询失败' };
}

关键说明

  • 不要在SQL语句中直接写if-else逻辑(SQL Server支持IF EXISTS(...)语法,但在Node.js层处理业务逻辑更灵活,也更符合分层设计)
  • results.recordset是查询返回的结果数组,无记录时长度为0,这是判断的核心依据
  • 参数化查询中,@userID是SQL中的参数占位符,和.input()方法里的第一个参数对应,必须保持一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 16:53:14