javascript - 如何使用 PG 在 Node JS 中获取 client.query 的值?

标签 javascript node.js postgresql express pg

我正在使用 node.js 并使用 postgresql 建立数据库连接。 我的 dbConfig.js 看起来像:-

var pg = require('pg');
var client  = new pg.Client({
    host:'myhoost',
    port:'5432',
    user:'myuser',
    password:'mypass',
    database:'mydb',
    ssl:true
});
client.connect();
module.exports.myconnection = client;

我的 api.js 文件看起来像:-

var dbConnect = require('./dbConfig.js');
var client = dbConnect.myconnection;
var ser = function(value) {
    var query = "SELECT * FROM tbl_api WHERE apikey = '" + value + "'";

    client.query(query, function(err, result) {
        var res = true;
        if (err) {
            var res = false;
        } else {
            if (result.rowCount > 0) {
                res = true;
            } else {
                res = false;
            }
        }
       return res;
    });
};
module.exports.checkAPI = ser;

我的 api.js 看起来像:-

var express = require('express');
var app = express();
var apiCheck = require('./api.js');


//APIKey Generator check api
app.get('/apicheck/:apikey', function(request, response) {
    var value = request.params.apikey;
    var result = apiCheck.checkAPI(value);
    response.send(result);
});

我想将来自 client.query 的 res 放入结果变量中。我发现了与 mysqljs issue 相同的问题但我仍然无法解决这个疑问。

最佳答案

我们需要回调完成以返回响应,解决此问题的方法之一是使用 promises,如下所示:

var ser = function(value) {
    var query = "SELECT * FROM tbl_api WHERE apikey = '" + value + "'";
    return new Promise(function (resolve, reject) {
       client.query(query, function(err, result) {         
           if (err) {
              return reject(err);
           } else {
              if (result.rowCount > 0) {
                  return resolve(true);
              } 
           }
           return resolve(false);
       });
   });
};
module.exports.checkAPI = ser;

并且在您的 api.js 中更改为:

var express = require('express');
var app = express();
var apiCheck = require('./api.js');


//APIKey Generator check api
app.get('/apicheck/:apikey', function(request, response) {
    var value = request.params.apikey;
    apiCheck.checkAPI(value)
      .then(function(result) { response.send(result); })
      .catch(function(err) { response.send(err); });
});

关于javascript - 如何使用 PG 在 Node JS 中获取 client.query 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44581716/

相关文章:

javascript - 根据 AngularJS 中的区域设置更改输入值

javascript - 是否有 JQuery 事件来确定元素的子项列表何时更改?

javascript - JS 循环变量作用域

node.js - 路线完成后重新调整 use()

javascript - crypto-js 如何隐藏类方法?

javascript - 将两个 32 位整数转换为一个带符号的 64 位整数字符串

postgresql - 在 PostgreSQL 中插入重复更新?

javascript - 如何将一个或多个变量附加到一个事件监听器?

database - 为什么两个表不能有同名索引?

arrays - 检查 Postgres 中的数组中是否存在多个值中的任何一个