【问题标题】:node-mysql: error when using object.querynode-mysql:使用 object.query 时出错
【发布时间】:2013-12-27 13:09:48
【问题描述】:

我正在学习 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;})}
                }
            });
        }
    });
}

【问题讨论】:

    标签: javascript mysql node.js node-mysql


    【解决方案1】:

    您应该使用conexao_bd,它是连接对象,而不是this

    conexao_bd.query(...);
    conexao_bd.end();
    

    【讨论】:

      【解决方案2】:

      你想做robertklep在query'n时说的,但是不要调用end(),你会关闭连接。通过您的简单示例,我将假设您在应用程序/模块启动/需要时创建数据库连接,因此仅在应用程序结束时关闭连接。我相信您只需要在 process.on('exit') 上设置一个偶数,如下所示:

      process.on('exit', function() {
          conexao_bd.end();
      });
      

      这样,您的连接仅在您的应用结束时关闭,而不是在您第一次查询后关闭。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-13
        • 2016-08-04
        • 2019-12-31
        • 2016-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-10
        相关资源
        最近更新 更多