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
相关产品推荐
相关产品推荐

