NodeJS中如何判断MySQL查询返回的result结果集是否为空或未定义
Node.js操作MySQL查询结果判断问题解决
报错原因
- 异步执行&作用域问题:node-mysql的
con.query是异步接口,result是仅在回调函数内部可用的参数,你将判断逻辑写在回调函数外部,代码执行时会先跑外部的if判断,此时回调还没触发,result根本没有定义,自然会抛出未定义错误。 - 判断逻辑语法错误:
!result[5] == undefined存在运算符优先级问题,会先执行!result[5]再和undefined比较,无法得到你想要的判断效果。
正确实现代码
con.query("SELECT tag, message FROM list1", function (err, result) { if (err) { console.log('Error: ' + err) return // 出错直接终止后续逻辑 } // 先判断结果集存在、长度足够覆盖下标5,再判定第5项不为空 if (result && result.length > 5 && result[5] != undefined) { console.log('Result 5 exists') // 你的其他业务逻辑写在这里 } });
补充判断规则
如果需要判断整个查询结果为空,直接判断result.length === 0即可,正常查询无匹配数据时result会返回空数组。
内容的提问来源于stack exchange,提问作者Martín Rubina
相关产品推荐
相关产品推荐

