node-mysql:使用 object.query 时出错
2013-12-27
407
我正在学习 nodejs 并使用“mysql”模块。使用此功能,我想验证数据库中是否已存在名称。
我遇到了当前错误
TypeError: Object #<Handshake> has no method 'query'
我认为它与“this.query”有关,但找不到修复它的方法。
代码
var mysql = require('mysql');
var conexao_bd = mysql.createConnection({
host: 'localhost',
user: 'user',
password: 'password',
database: 'db_name'
});
function verifica_nome(n){
var bool = false;
conexao_bd.connect(function(err){
if(err){
return console.log("Aconteceu um erro quando se tentava ligar à base de dados. Erro: "+err);
}
else{
this.query("SELECT name FROM Users WHERE name=?", [n], function(err,rows){
if(err != null){ this.end("Erro na query: "+err); }
else{
if(rows[0]!=n){ bool=true; this.end(function(err){ return bool;})}
else{ this.end(function(err){ return bool;})}
}
});
}
});
}
2个回答
您应该使用
conexao_bd
,它是连接对象,而不是
this
:
conexao_bd.query(...);
conexao_bd.end();
robertklep
2013-12-27
您想在查询时执行 robertklep 所说的操作,但不调用 end (),您将关闭连接。对于您的简单示例,我将假设您在应用程序/模块启动/需要时创建数据库连接,因此仅在应用程序结束时关闭连接。我相信您只需要在 process.on('exit') 上设置一个事件,如下所示:
process.on('exit', function() {
conexao_bd.end();
});
这样,您的连接仅在应用程序结束时关闭,而不是在第一次查询后关闭。
Chris
2013-12-27