[英]In node pg client.query doesn't return
我目前正在更新一個非常舊的應用程序,以便在Heroku上運行。 我必須更新到最新版本的pg才能支持heroku上的最新postgres。 但是,這最初是抽象出來的,因此全部在一個文件中處理(如下)。 我可以成功連接到數據庫,但是client.query
永遠不會返回。
第一個console.log
是SELECT * FROM public.user WHERE "email" = $1 [ 'xx@xx.com' ]
。 但是,我從未到達第二個console.log
。 我沒有任何連接錯誤。
我正在使用pg 7.x
和postgres 10。
有任何想法嗎?
const { Client } = require('pg'); const config = require('.././app/models/config.js'); const client = new Client({ connectionString: process.env.DATABASE_URL || config.database || '' }); var conString = config.database || ''; client.connect(); module.exports = { query: function(text, values, cb) { console.log(text, values); client.query(text, values, function(err, result) { console.log(err, result); if (err) { console.log(err); } if (cb) { cb(err, result); } client.end(); }); } };
編輯:我已經用pg的正確承諾進行了編輯。 由於Nodejs的異步特性,您必須使用promise,例如:
module.exports = {
query: function(text, values) {
console.log(text, values);
return new Promise(function (resolve, reject) {
client.query(text, values)
.then(function (res) { resolve(res.rows[0]) })
.catch(function (e) { reject(e.stack) };
});
}
};
然后要求您進行模塊使用並兌現承諾:
var myPrevModule = require('module');
myPrevModule.query.then(function(resp){
// Consume the callback here ...
}).catch(function(err){
console.error(err);
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.