2016-10-04 53 views
0

我想让用户输入我的应用程序的标准(即客户端)来查询mySQL数据库并返回所有匹配结果。我的连接已经建立,我可以对我的查询进行硬编码(connection.query(“select * from ACHLookerUpper where Client =?”,[“ex。”])并返回预期的结果,我也可以简单地运行提示命令和摄入量和console.log我的输入。使用提示用户输入查询MySQL(Node.js)

但是,当我尝试通过提示和查询结合两个摄入用户输入 - 我无法成功地将输入传递到我的查询。确定在我的嵌套中存在一个问题,但是除了告诉我“不能在调用Quit后查询查询”之外,这个错误并没有什么帮助。

我确定我需要将results.Client作为var或param存储,然后调用它在我的查询,但无法弄清楚如何。

var mysql = require("mysql"); 
var prompt = require('prompt'); 

var connection = mysql.createConnection({ 
    host: "<host>", 
    user: "<user>", 
    password: "<pw>", 
    database: "<db>", 
    port: "<port>" 
}); 

connection.connect(function(err){ 
    if(err){ 
    console.log('Error connecting to Db'); 
    return; 
    } 
}); 


prompt.start(); 

prompt.get(['Client'], function (err, result) { 
    if (err) { console.log("Error"); 
    return; 
    }; 

    connection.query("select * from ACHLookerUpper where Client = ?", [result.Client], exports.MyHandler = function(err, rows){ 
    if (err) { 
     console.log(err); 
     return; 
    } 

    rows.forEach(function(result) { 
     console.log(result.ID, result.Name, result.Client, result.ACH); 
    }) 
    }) 
}); 

connection.end(function(err) { 

}); 

回答

0

prompt.get()是异步的,因此connection.end()先被调用,然后在尝试执行查询时收到提示的输入,但连接已经在该点结束。

+0

我该如何修复,以便在结束之前循环遍历所有内容? – DomLaM

+0

你可以尝试在'prompt.get()'回调中移动它,但在你调用'connection.query()'之后。在connection.query()之后调用'connection.end()'将允许所有排队的查询在关闭连接之前完成。 – mscdex