【发布时间】:2017-06-09 03:11:12
【问题描述】:
我正在开发一个非常简单的 Web 应用程序,它并没有做太多的事情,但是它确实连接到一个数据库,以便在一个表上进行 INSERT 和 SELECT 操作。我在浏览几个很棒的教程时使用了一个函数,但是我无法从 SELECT 查询返回rows。请记住,我正在学习 Node.JS——如何将查询 (SELECT) 返回的数据显示到此块?
app.post("/getcsv", function(req,res){
var sqlselall = "SELECT * FROM office";
var rows = handle_database(sqlselall);
res.json(rows);
res.end();
处理数据库连接的函数(使用池化):
function handle_database(sqlstmt){
pool.getConnection(function(err,connection){
if(err) {
res.json({"code" : 100, "status" : "Error in connection to database."});
return;
}
console.log('connected as id ' + connection.threadId);
connection.query(sqlstmt, function(err,rows){
connection.release();
if(!err){
console.log("Number of rows affected: " + rows.affectedRows);
}
});
connection.on('error', function(err) {
res.json({"code": 100, "status" : "Error in connection to database."});
return;
});
我意识到内部函数中的rows 包含我需要的数据,但是当我调用该函数时,我不知道如何返回它。
【问题讨论】:
-
@Paul - 不幸的是,我无法完全掌握 JS 中回调的概念。
-
这只是你必须通过一些教程运行的东西。回调只是函数,但您想要的内容(例如行)仅在该函数的 inside 范围内。因此,您需要确保您需要使用的所有内容都在同一范围内可用。
-
@Paul 好的——这就是我现在正在做的事情——阅读回调。我认为范围与它有很大关系。
-
是的,这并不难,这只是一个认知上的飞跃,你只有在用头撞一两次后才能实现。 :) 在你了解它之后,看看 asyncjs 库,以便更轻松地进行流控制和 Promise(特别是如果你愿意使用最新版本的 Node,它将 async/await 带到桌面上)
标签: javascript mysql node.js express