2017-06-16 36 views
0

我正在使用node.js并与postgresql建立数据库连接。 我dbConfig.js样子: -如何在PG中使用Node获取client.query的值?

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有同样的问题,但我仍然无法解决这个疑问。

+0

什么你收到回应吗? – Zeokav

+0

我没有收到任何东西。 @Zeokav –

+0

为什么有人下了这个问题呢?我只是在问我的疑问。它是否有效? –

回答

0

我们需要回调来完成返回响应,的途径之一,这是使用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); }); 
}); 
+0

承诺是什么?喜欢用途和所有? @nash_ag –

+0

它给我一个错误TypeError:无法读取未定义的属性'然后'。 –

+0

啊 - 修复答案。 –

相关问题