[英]How to i fetch value of client.query in Node JS with 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問題同樣存在問題,但我仍然無法解決這個問題。
我們需要回調來完成返回響應,其中一種解決方法是使用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); });
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.