Auth0 PostgreSQL连接报错:this._connectionCallback is not a function
报错原因分析
报错this._connectionCallback is not a function的核心问题是你错误调用了pg库的connect()方法:
- 你在实例化
Client时已经传入了完整的连接配置,调用connect()时不需要再把Client实例本身(conString)作为第一个参数传入。pg的connect()方法仅接受一个回调函数参数(或不传参数用异步语法),你多传的参数被错误识别为内部需要的_connectionCallback,但它是Client实例而非函数,因此触发报错。
另外你的代码还有两处需要修正的细节:
- 变量命名混乱:把Client实例命名为
conString易造成混淆,建议改为dbClient这类清晰名称 - 连接字符串格式错误:
postgresql://postgres:password@database:port/host的最后一段应为数据库名称,而非host,正确格式是postgresql://用户名:密码@主机地址:端口/数据库名
修正后的代码示例:
function verify(email, callback) { const { Client } = require("pg"); // 修正变量名与连接字符串格式 const dbClient = new Client({ connectionString: 'postgresql://postgres:password@主机地址:端口/数据库名' }); // connect方法仅传入回调函数 dbClient.connect(function(err, client, done) { if (err) return callback(err); const query = 'UPDATE auth_user SET email_verified = true WHERE email_verified = false AND email = $1'; client.query(query, [email], function(err, result) { done(); // 关闭客户端连接,避免资源泄漏 dbClient.end(); return callback(err, result && result.rowCount > 0); }); }); }
内容的提问来源于stack exchange,提问作者Rno
相关产品推荐
相关产品推荐

