Node JS MySQL查询函数不返回结果

时间:2015-05-05 19:55:39

标签: javascript mysql node.js function

我在Node JS上运行的.js文件中运行MySQL查询。我有连接设置确定和查询工作,但当我尝试将结果返回到原始调用时,它似乎不起作用。

function sqlQuery(query){
	console.log("Running query");
	var conn = connection();
	var result = false;
	conn.query(query, function(err, rows, fields) {
	    conn.end();
	    if (!err){ result = rows; } else { result = err; }
	});
	return result;
}

var loginResult = sqlQuery("SELECT * FROM `players`");
console.log(loginResult);

如果我使用以下代码,它会将结果写入查询内的控制台,而不是最终的“loginResult”。我没有收到任何错误,所以我的问题是 - 我得到返回结果的方式是否有错误?

if (!err){ result = rows; console.log(rows); } else { result = err; }

2 个答案:

答案 0 :(得分:4)

几乎Node.js中的所有内容都是异步的,而SQL查询函数肯定是异步的。你正在调用conn.query(query, callback),这意味着调用了查询,然后一旦在将来某个时候出现结果,你的回调函数就会被调用,结果你可以使用它。所以:

conn.query(query, function(err, rows, fields) {
    if (err) return console.error("no results were found!");
    processResults(rows, fields);
});

调用conn.query(...)后,您不会立即得到结果,因此您的代码会在同一时间内执行“其他操作”,并且在某些时候,您的回调将被触发并且您可以获取结果在那里处理。

答案 1 :(得分:0)

conn.query(query, function(err, rows, fields) {
    if (err) 
        console.log("error ocurred",err);
    res.send({
        "code":400,
        "message":"error ocurred"
    })
});