在node.js mysql查询中,检查是否找不到匹配项

Rej*_*aul 12 javascript mysql node.js node-mysql

如何检查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:'
}
Run Code Online (Sandbox Code Playgroud)

我的数据库不包含name ='abcd'.那么,我该如何检查查询是否不匹配?

Rod*_*ros 16

[]作为查询结果,您收到一个空数组(),因为正如您所说,您的数据库不包含任何行name = 'abcd'.

当你这样做时:

if (result) {
  if (result)
    console.log("Test:" + result);
Run Code Online (Sandbox Code Playgroud)

,你会进入if,JavaScript,因此评估true[].看一下这篇文章,它解释了Javascript如何评估true和评估false.

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

if (result.length > 0) {
  if (result)
    console.log("Test:" + result);
Run Code Online (Sandbox Code Playgroud)

  • 如果`result.length`大于0,为什么需要检查`if result`? (5认同)
  • `if(!result.length)`在这里工作得很好. (3认同)