将结果从一个函数传递给nodejs上的另一个函数
Pass result from a function to another function on nodejs
我有这个功能可以连接到我的数据库并查询其中的内容。
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 文件中的其他函数中使用它。我如何在不获取变量内部代码的情况下获取该值?
您的 function conn (text)
正在使用回调获取数据,您需要将该模式一直传递到使用代码。我不确定 "other functions" 是什么样子,但让我们假设一个看起来像这样:
function awesomeFunction() {
var sweetResult = conn('sweet nickname');
alert(sweetResult);
}
conn
将连接并向您的数据库发出查询。您确实 而不是 想要停止其他一切并等待结果返回,您希望 db 库在有结果时调用您,因此回调。由于数据库没有停止一切,控制 returns 到您的 conn
函数,然后返回到 awesomeFunction
,并传递到下一行 alert(sweetResult)
。可是等等!您没有 return 来自 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);
}
});
...
};
我有这个功能可以连接到我的数据库并查询其中的内容。
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 文件中的其他函数中使用它。我如何在不获取变量内部代码的情况下获取该值?
您的 function conn (text)
正在使用回调获取数据,您需要将该模式一直传递到使用代码。我不确定 "other functions" 是什么样子,但让我们假设一个看起来像这样:
function awesomeFunction() {
var sweetResult = conn('sweet nickname');
alert(sweetResult);
}
conn
将连接并向您的数据库发出查询。您确实 而不是 想要停止其他一切并等待结果返回,您希望 db 库在有结果时调用您,因此回调。由于数据库没有停止一切,控制 returns 到您的 conn
函数,然后返回到 awesomeFunction
,并传递到下一行 alert(sweetResult)
。可是等等!您没有 return 来自 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);
}
});
...
};