Javascript 在windows中,停止postgres服务会导致节点崩溃;错误:由于管理员命令而终止连接;

Javascript 在windows中,停止postgres服务会导致节点崩溃;错误:由于管理员命令而终止连接;,javascript,node.js,windows,postgresql,express,Javascript,Node.js,Windows,Postgresql,Express,场景1:postgres服务未运行。节点启动。rest调用超时=>无问题 场景2:postgres服务未运行。节点启动。博士后服务开始。rest调用work=>无问题 场景3:postgres服务未运行。节点启动。博士后服务开始。休息就是工作。postgres服务停止=>节点崩溃 发生这种情况时的堆栈跟踪如下所示: 错误:由于管理员命令而终止连接 在Connection.parseE(…\express.js\node\u modules\pg\lib\Connection.js:553:11)

场景1:postgres服务未运行。节点启动。rest调用超时=>无问题

场景2:postgres服务未运行。节点启动。博士后服务开始。rest调用work=>无问题

场景3:postgres服务未运行。节点启动。博士后服务开始。休息就是工作。postgres服务停止=>节点崩溃

发生这种情况时的堆栈跟踪如下所示:

错误:由于管理员命令而终止连接 在Connection.parseE(…\express.js\node\u modules\pg\lib\Connection.js:553:11) 在Connection.parseMessage(…\express.js\node\u modules\pg\lib\Connection.js:378:19) 在插座上。(…\express.js\node\u modules\pg\lib\connection.js:119:22) 在emitOne(events.js:116:13) 在Socket.emit(events.js:211:7) 在addChunk(_stream_readable.js:263:12) 在readableAddChunk(_stream_readable.js:250:11) 在Socket.Readable.push(_stream_Readable.js:208:10) 在TCP.onread(net.js:594:20)

我正在使用具有以下配置的Postgres池:

const pool = new Pool({
    user: 'postgres',
    host: 'localhost',
    database: 'sampleDB',
    password: 'password',
    port: 5432,
    max: 1,
    idleTimeoutMillis: 30000,
    connectionTimeoutMillis: 2000,
})

如何处理这种情况,使节点不会崩溃,并可以返回到场景1,然后移动到场景2?

在阅读了node-postgres()的文档后,我找到了捕获此错误并避免节点崩溃的方法

pool.on('error', (err, client) => {
    console.log('postgres connection error : ' + err)
})

添加上述代码将允许node处理错误而不会崩溃。

在阅读了node-postgres()的文档之后,我找到了捕获此错误并避免节点崩溃的方法

pool.on('error', (err, client) => {
    console.log('postgres connection error : ' + err)
})

添加上述代码将允许节点处理错误而不会崩溃。

捕获错误。适当的SQLState是
57014
57P01
57P02
@LaurenzAlbe谢谢。我有几个与此相关的问题。1:你是怎么得到密码的?2:这在生产环境中是可以接受的方法吗?
java.sql.SQLException
有一个
getSQLState()
方法。这是区分不同错误的最佳方法。解析消息文本不是一个好主意。请捕获错误。适当的SQLState是
57014
57P01
57P02
@LaurenzAlbe谢谢。我有几个与此相关的问题。1:你是怎么得到密码的?2:这在生产环境中是可以接受的方法吗?
java.sql.SQLException
有一个
getSQLState()
方法。这是区分不同错误的最佳方法。解析消息文本是个坏主意。