在 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,因为 javascripttrue 计算为 []。看看 this article here,它解释了 JavaScript 如何评估 truefalse 值。

检查结果数组是否为空的更好方法是:

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 中检查存储桶是不是准备就绪的最佳方法

使用 node.js 检查数据是不是包含在 SQLite3 数据库中

如何检查用户是不是在 Firebase 和 Express/Node.js 中经过身份验证?

node.js 同步 mysql 查询

node.js,express - 在循环中以同步方式一个接一个地执行mysql查询

Node.js 和 mysql 回调:查询回调中的查询