我在Openshift中有一个带有MySQL盒式磁带的nodejs服务器。它似乎构建没有问题,但是,当我尝试查询数据库时,它似乎什么都不做......它甚至没有给我一个错误,它只是什么也没做。这是我的相关代码。
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'mysql://' + process.env.OPENSHIFT_MYSQL_DB_HOST + ':' + process.env.OPENSHIFT_MYSQL_DB_PORT + '/',
user: process.env.OPENSHIFT_MYSQL_DB_USERNAME,
password: process.env.OPENSHIFT_MYSQL_DB_PASSWORD,
database: 'revision',
multipleStatements: true,
debug : true
});
并在适当的路线:
var stuff = 'abc';
connection.query('SELECT 1', function(err, rows, fields){
if (err) {
stuff = "ghi";
} else {
stuff = "def";
}
});
stuff = stuff + "done";
res.send(JSON.stringify(stuff));
它应该返回“defdone”或“ghidone”,但它总是返回“abcdone”......就好像它甚至没有进入函数内部。我已经尝试了几种方法来做到这一点,但都没有用。我已经转储了连接变量,它似乎就是这个意思。
我使用SELECT 1作为查询字符串的原因是验证它不是数据库错误。
答案 0 :(得分:1)
似乎“问题”与节点的异步性质有关,因为最终的2条指令在查询完成之前执行。此外,配置似乎总是错误的,因为我只有整个网址的“主机”属性。我把它改为2个属性 - “主机和”端口“,给它们适当的变量(process.env.OPENSHIFT_MYSQL_DB_HOST和process.env.OPENSHIFT_MYSQL_DB_PORT)。它现在正在工作!