簡體   English   中英

在節點pg client.query不返回

[英]In node pg client.query doesn't return

我目前正在更新一個非常舊的應用程序,以便在Heroku上運行。 我必須更新到最新版本的pg才能支持heroku上的最新postgres。 但是,這最初是抽象出來的,因此全部在一個文件中處理(如下)。 我可以成功連接到數據庫,但是client.query永遠不會返回。

第一個console.logSELECT * 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM