NodeJS在函数内返回true / false

时间:2017-02-03 08:56:39

标签: node.js

我目前有这样的代码

function userExists(userID) {
   connection.query(query, function(error, results, fields) {
       if(results.length > 0) {
           return true;
       }
       return false;
   });
}

我的意图是如果找到结果则返回true,如果没有则返回false。由于返回函数内部的函数,这不起作用,我将如何修复此问题,因此我仍然可以if(userExists(id)) { code }

1 个答案:

答案 0 :(得分:2)

您将需要使用Promise或回调函数。以下是如何使用promise实现该函数的示例:

function userExists(userID) {
   return new Promise(function(resolve, reject) {
       connection.query(query, function(error, results, fields) {
           resolve(results.length > 0);
       });
   }
}


userExists(1).then(function(result) {
  // Here result will be either true or false.
}

如果您正在运行节点,则可能可以使用ES6语法,因此您也可以编写

const userExists = userID => new Promise((resolve, reject) => {
   connection.query(query, (error, results, fields) => {
       resolve(results.length > 0);
   });
});

userExists(1).then(result => {
    console.log(result);
});

编辑:

如果由于某些原因需要使用回调函数来实现这一点,那么你将如何做到这一点。尽管使用Promise是优选的。

const userExists = (id, callback) => {
    connection.query(query, (error, results, fields) => {
        callback(results.length > 0);
    });
}

userExists(1, result => {
    console.log(result);
});