Javascript范围.如何从回调函数中检索信息?节点mysql
Javascript scope. How to retrieve information from a callback function? Node-mysql
我是Javascript的新手,我试图制作一个函数来返回我从数据库中获得的iten数组。首先我尝试了这个:
function getItens(userId){
var arr = new Array;
var result;
var connection = mysql.createConnection({
host : 'localhost',
user : 'XXXXXX',
password : 'XXXXXX',
database : 'XXXXXX',
});
connection.connect();
connection.query('SELECT * from itens where userId = '+ userId function(err, rows, fields){
if (err) throw err;
arr = rows.slice()
});
return arr;
connection.end();
}
然后我意识到存在范围问题,经过一些研究,我试图模拟一个静态变量,如
function getItens(userId){
(function (){
var resultado;
Result = function(valor) { resultado = valor; };
Result.prototype.getResultado = function (){return resultado};
Result.prototype.setResultado = function (valor){ resultado = valor; };
})();
var ar = new Result([]);
var connection = mysql.createConnection({
host : 'localhost',
user : 'XXXXXX',
password : 'XXXXXX',
database : 'XXXXXX',
});
connection.connect();
connection.query('SELECT * from itens where userId = '+ userId , function(err, rows, fields){
if (err) throw err;
ar.setResultado(rows.slice());
});
return ar.getResultado();
connection.end();
}
但它没有起作用,我做错了什么?
您给query
函数一个回调,因为它不会立即执行。
在调用connection.query
之后的行中,回调尚未运行。
您必须在您提供的回调中使用数据。请注意,一种常见的模式是为查询函数提供回调:
function fetchItens(userId, callback){
var arr = new Array;
var result;
var connection = mysql.createConnection({
host : 'localhost',
user : 'XXXXXX',
password : 'XXXXXX',
database : 'XXXXXX',
});
connection.connect();
connection.query('SELECT * from itens where userId = '+ userId function(err, rows, fields){
if (err) throw err;
arr = rows.slice()
callback(arr);
});
connection.end();
}
fetchItens(someId, function(arr){
// use arr
});
由于NodeJS中的大多数I/O都是异步的,因此需要通过调用函数来更改函数和使用的代码。您应该考虑"回调",并理解在这种情况下不能使用return。查询时,不会立即执行。它只是注册一个回调,当MySQL Server响应您的应用程序时,只有在那时才会调用该回调。示例:
function getItems(userid, callback){
connection.connect();
connection.query("SELECET .....", function(err,rows,fields){
callback(rows.slice());
}
}
var userid = 5;
getItems(userid, function(items){
for(var i in items){
.....
}
});
相关文章:
- ExtJS 4.1-检索嵌套JSON的hasOne信息
- *简单*解析云代码查询失败”;TypeError:无法调用方法'获取'未定义的“检索该信息”;
- 如何使用地点ID从Google Places JS API检索地点详细信息
- 无法在量角器中检索电子邮件信息
- Nodejs从数据库中检索信息并传递给JavaScript
- 与直接阵列访问相比,使用函数检索配置信息
- 在 HTML 表格中显示从 Firebase 数据库中检索到的信息
- 通过ajax(铁-ajax,聚合物)检索mailchimp列表详细信息
- 如何在标头重定向之前通过 ajax 从 php 文件中检索信息
- 如何使用javascript检索有关mp3的信息
- 如何通过ID从Google我的图书馆检索特定的书籍详细信息
- 是否可以仅使用javascript检索数据库详细信息
- Javascript函数来检索所有用户的信息
- 如何使用 javascript 检索此信息
- “$.get”用于检索信息
- 我的 $.getJSON 似乎没有从我的 JSON 文件中检索信息
- 用于检索、保存和存储信息的内部网页
- 潮汐信息检索
- 如何通过单击特定信息检索值
- Javascript数组和信息检索