我有一个非常基本的场景,我正在NodeJS应用程序中对NodeJS进行创建操作调用。一旦我得到了创建操作的结果(成功或失败),我就必须执行一些代码。
但是现在由于NodeJS的异步行为,我的代码依赖于结果MySQL创建操作在MySQL创建操作返回结果之前执行。
这是我的密码
发布于 2016-09-08 10:35:08
我不知道我是否正确地理解了你的问题(例如,什么是“创建操作”)。但是..。
您可以尝试以下解决方案:在connect成功回调中执行查询:
// getting connection and executing query
con.connect(function(err){
if(err){
console.log('Error connecting to Db');
return;
}
console.log('Connection established');
con.query(selectQuery, values, function(err,rows){
if(err) throw err;
console.log(rows);
result = rows;
console.log(result);
return result; // this can't work... you should invoke a callback function, here...
});
});更新:在OP评论之后,我现在完全理解了这个问题.(对不起:-()
你只是错过了一点异步行为..。:-)
您只需将methods.executeQuery更改为
function(selectQuery, values) {
...
}至
function(selectQuery, values, callback) {
...
}然后,代替使用
return result;你应该简单地使用
callback(err, result); // if any error occurred或
callback(null, result); // if no error occurred然后,在client.js中,当调用executeQuery方法时,而不是
var insertedRowInfo = execute.executeQuery(selectQuery, values);你应该简单地做
execute.executeQuery(selectQuery, values, function(err, insertedRowInfo) {
if (err) {
// handle error
} else {
// handle success, using insertedRowInfo...
}
});https://stackoverflow.com/questions/39388507
复制相似问题