node.js - NodeJS 在函数内部返回 true/false

标签 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 }

最佳答案

您将需要使用 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.
}

如果您正在运行 Node ,您可能可以使用 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);
});

关于node.js - NodeJS 在函数内部返回 true/false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42020298/

相关文章:

javascript - 如何通过点击事件与 Node.js 服务器通信?

node.js - 在 Node.js 中使用流时内存泄漏?

javascript - Tensorflow 给出回归问题的随机答案

node.js - 如何在 Windows 上设置 NODE_ENV=生产?

javascript - 将数据从 javascript/html 页面发送到 Express NodeJS 服务器

node.js - Electron/NodeJS : I can't retriving mysql table data and print them on the index. html 页面

javascript - GraphQL 将 args 中的字符串转换为 float

node.js - 在 Mongoose 中查找对象并将其更新到数组中

linux - 没有浏览器的 Raspberry Pi 上的 WebRTC

javascript - 在 Angular2 应用程序中运行 Node-js 代码