方案1:postgres服务未运行。节点启动。休息电话超时=>没有问题
方案2:postgres服务未运行。节点启动。 postgres服务启动。休息电话工作=>没问题
方案3:postgres服务未运行。节点启动。 postgres服务启动。休息电话工作。 postgres服务停止=>节点崩溃。
发生这种情况时的堆栈跟踪如下:
错误:由于管理员命令而终止连接 在Connection.parseE(... \ express.js \ node_modules \ pg \ lib \ connection.js:553:11) 在Connection.parseMessage(... \ express.js \ node_modules \ pg \ lib \ connection.js:378:19) 在套接字。 (... \ express.js \ node_modules \ pg \ lib \ connection.js:119:22) 在emitOne上(events.js:116:13) 在Socket.emit(events.js:211:7) 在addChunk(_stream_visible.js:263:12) 在readAddChunk(_stream_visible.js:250:11) 在Socket.Readable.push(_stream_read.js:208:10) 在TCP.onread(net.js:594:20)
我正在通过以下配置使用Postgres Pool:
const pool = new Pool({
user: 'postgres',
host: 'localhost',
database: 'sampleDB',
password: 'password',
port: 5432,
max: 1,
idleTimeoutMillis: 30000,
connectionTimeoutMillis: 2000,
})
如何处理这种情况,以使节点不会崩溃,并且可以返回到方案1,然后再移至方案2?
答案 0 :(得分:0)
阅读完node-postgres(link)的文档后,我想出了一种捕获此错误并避免节点崩溃的方法。
this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.RECORD_AUDIO).then(
(result)=>{
if(!result.hasPermission)
{
this.androidPermissions.requestPermissions(
[this.androidPermissions.PERMISSION.RECORD_AUDIO,
this.androidPermissions.PERMISSION.GET_ACCOUNTS]
).then(()=>{
// this.rootPage = HomePage;
window.location.reload();
});
}
});
添加以上代码将使节点能够处理错误,而不会崩溃。