我在Node.js中有MySQL查询,我正在尝试返回“变量”并将getVarible OUTSIDE分配给我的查询。在这种情况下可以做到吗?如果是这样,怎么样?
这是我的代码:
var sqlQuery = connection.query(result, function(err, rows, fields) {
var count = rows.length;
if(count === 1){
var variable = rows[0].item;
return variable;
}
}
});
var getVariable = variable;
答案 0 :(得分:0)
如果在查询调用之前声明了getVariable,那么在查询返回之后,您应该能够在cacllback功能中访问它。你可以尝试这样的事情:
var getVariable = {};
var sqlQuery = connection.query(result, function(err, rows, fields) {
var count = rows.length;
if(count === 1){
getVariable = rows[0].item;
}
}
});
但请记住,查询执行是异步的,因此在执行回调之前,您的变量将为空。
所以我会建议你使用该变量在回调中执行或使用异步框架的承诺的所有逻辑。
答案 1 :(得分:0)
您的connection.query
未返回您认为返回的内容,即return variable;
语句无效。
使用查询对象检查API。
var query = connection.query('SELECT * FROM posts');
query
.on('error', function(err) {
// Handle error, an 'end' event will be emitted after this as well
})
.on('fields', function(fields) {
// the field packets for the rows to follow
})
.on('result', function(row) {
// Pausing the connnection is useful if your processing involves I/O
connection.pause();
processRow(row, function() {
connection.resume();
});
})
.on('end', function() {
// all rows have been received
});
或者,您可以通过使用connection.query
的第二个参数来简短地处理成功,错误。这是一个带有签名function (error, results, fields)
的函数,它与上面的API完全相同。
connection.query(sqlQueryStr, function (error, results, fields) {})
对connection.query
的调用是异步的,并且作为第二个参数传递的函数仅在结果可用之后执行,即查询已执行。