javascript - 将结果从一个函数传递到 Nodejs 上的另一个函数

标签 javascript node.js function

我有这个功能可以连接到我的数据库并查阅其中的内容。

function conn (text){  
var mysql      = require("mysql");
var connection = mysql.createConnection({
    connectionLimit : 100, //important
    host     : 'xxx.xxx.xxx.xxx',
    user     : 'xxxxxx',
    password : 'xxxxxxx',
    database : 'xxxxxxxx'
});

connection.connect();

var queryString = 'SELECT usuario.idUsuario FROM usuario WHERE usuario.nickname = ' + '"' +  text + '"';  

function getID(text, callback){
connection.query(queryString, function(err, rows, fields) {
  var id;
    if (err){ 
      callback(err, null);
    }else{
      for (var i in rows) {
          id = rows[i].idUsuario;
      }
      callback(null, id);
    }
});
}

var result;
    getID(text, function(err, content) {
    if (err) {
      console.log(err);
    } else {
      result = content;
    }
});
connection.end();
};

现在,我需要在其他变量中获取结果,以便在 JS 文件内的其他函数中使用它。如何在不获取变量内部代码的情况下获取该值?

最佳答案

您的函数 conn (text) 正在使用回调获取数据,您需要将该模式一直传递到使用代码。我不确定“其他功能”是什么样子,但让我们假设一个看起来像这样:

function awesomeFunction() {
  var sweetResult = conn('sweet nickname');
  alert(sweetResult);
}

conn 将连接并向您的数据库发出查询。您不想停止其他一切并等待结果返回,您希望数据库库在有结果时调用您,因此需要回调。由于数据库并未停止所有操作,因此控制权返回到 conn 函数,然后返回到 awesomeFunction,并传递到下一行 alert(sweetResult)。可是等等!您没有从 conn 返回任何内容,但更重要的是,数据库甚至还没有回调结果!

因此,您需要 awesomeFunction 看起来更像这样:

function awesomeFunction() {
  conn('sweet nickname', function(err, sweetResult) {
    alert(sweetResult);
  });
}

这意味着 conn 也需要接受并使用回调:

function conn (text, resultsAreInCB){  
  ...
  connection.query(queryString, function(err, rows, fields) {
    var id;
    connection.end();
    if (err){
      resultsAreInCB(err, null);
    } else {
      for (var i in rows) {
        id = rows[i].idUsuario;
      }
      callback(null, id);
    }
  });
  ...
};

关于javascript - 将结果从一个函数传递到 Nodejs 上的另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38574891/

相关文章:

node.js - 将流写入 gridfs-stream

Javascript:在页面加载时调用函数而不是 onclick/onsubmit

javascript - 如何进行 AngularJS REST 服务调用来填充表并设置默认值

javascript - 使用无限 JavaScript 循环创建计划报告

javascript - 将 innerHTML 与 querySelectorAll 结合使用

node.js - Nodejs 应用程序崩溃了 heroku - 错误无法连接到本地主机 :27017

javascript - 从包含键路径的字符串中获取 json 值

javascript - 如何在Intellij中jsDoc Node module.exports对象方法?

function - 如何将 .txt 文件作为函数参数传递

使用非默认选项运行现有函数