准备好的语句 node-postgresql 错误,结果为空

prepared statements node-postgresql error with null result

我是 node.js 和 postgresql 的新手。我已经与 postgres 数据库连接并执行一些测试代码。在我要使用准备好的 statements.am 创建一个示例登录脚本之后。如果用户存在 return username else return message "invalid username or password"。如果用户名和密码正确,则为 return 用户名。但不会显示任何数据,因此无法显示 return 消息。我的看法是,执行cliend.end()函数后控件会崩溃。

这是我的代码

UserLogin.get = function(userName, callBack) {
    pg.connect(pgConString, function(err, client, done) {
        if (err) {
            callBack("DB connection failed. " + err, null);
            return;
        }
        var selectQuery="SELECT * from  "  + TABLE + " WHERE userName=()";
        var query=client.query({
                text:selectQuery,
                values:[userName],
                name:"selectQuery"});

                query.on("error", function (error) {
                 callBack("DB fetch failed. Error Message: " + err, null);});

                query.on('row', function(row) {
                callBack(null, row);});

                query.on("end", function (result) {
                client.end();
                return;
                 });
            });     
}

if row is empty, not return to callback. if row_result is not empty, its working fine.. How...???? any idea...???

您的代码

query.on('row', function(row) {
  callBack(null, row);
});

表示每次查询从数据库中获取 1 行时都会调用回调。在查询有 0 个结果的情况下,永远不会调用回调。

终于找到答案了。谢谢你的支持

UserLogin.get = function(userName, callBack) {
    pg.connect(pgConString, function(err, client, done) {
        if (err) {
            callBack("DB connection failed. " + err, null);
            return;
        }
        var selectQuery="SELECT * from  "  + TABLE + " WHERE userName=()";
       var query=client.query({
            text:selectQuery,
            values:[loginId],
            name:"selectQuery"});

            query.on("error", function (error) {
             callBack("DB fetch failed. Error Message: " + err, null);return;});

            query.on('row', function(row,result) {
            result.addRow(row);
            });

            query.on('end', function (result) {
            callBack(null,result.rows);
            client.end();
            return;
             });
        });     
}

在我的旧代码中,每次查询从数据库中获取 1 行时都会调用回调。我只是改变了逻辑