在 node.js mysql 查询中,检查是不是没有找到匹配项
Posted
技术标签:
【中文标题】在 node.js mysql 查询中,检查是不是没有找到匹配项【英文标题】:In node.js mysql query, check if no matching found在 node.js mysql 查询中,检查是否没有找到匹配项 【发布时间】:2014-08-31 17:52:25 【问题描述】:如何检查 mysql (node.js) 中是否找不到匹配项?
mysql.query("select * from table1 where name = 'abcd'", function(error, result, field)
if(error)
exist(error); //No error
else if(result)
console.log(result); //displays '[]'
exist(null, result);
else
exist(null, null); //It is never execute
);
function exist(error, result)
if(result)
console.log("Test:"+result); //Executed and displays 'Test:'
我的数据库不包含 name = 'abcd'。那么,如何检查查询是否不匹配?
【问题讨论】:
【参考方案1】:您的查询结果是一个空数组 ([]
),因为正如您所说,您的数据库不包含任何带有 name = 'abcd'
的行。
当你这样做时:
if (result)
if (result)
console.log("Test:" + result);
,您将输入 if
,因为 javascript 将 true
计算为 []
。看看 this article here,它解释了 JavaScript 如何评估 true
和 false
值。
检查结果数组是否为空的更好方法是:
if (result.length > 0)
if (result)
console.log("Test:" + result);
【讨论】:
if (!result.length)
在这里可以正常工作。
@BenFortune 同意,因为 Javascript 将 false
评估为 0
。只是我喜欢那种冗长的代码编写方式。
不应该是(if result.isArray() && result.length > 0)
??不管怎样,本的“负面”更好
@BenFortune 对我来说效果不佳。对我有用的是if(result.length != 0)
或大于。
如果result.length
大于0,为什么还要检查if result
?以上是关于在 node.js mysql 查询中,检查是不是没有找到匹配项的主要内容,如果未能解决你的问题,请参考以下文章
使用 node.js 检查数据是不是包含在 SQLite3 数据库中
如何检查用户是不是在 Firebase 和 Express/Node.js 中经过身份验证?