PostgreSQL 9.6.2我从node.js / express.js应用程序发送查询。
sequelize提供doc how to make the query,这个例子是findAll。
我试着做同样的例子。
console.log('user id: ', req.decoded);
db.orders.findAll({where: {userId: req.decoded.id}})
.then(function (orders) {
console.log('orders from db: ', orders);
})
.catch(function (err) {
console.log('orders request error from db: ', err);
});
console.log('end of function');
控制台日志:
user id: { id: 2 }
end of function
orders request error from db: { SequelizeConnectionError: read ECONNRESET
at D:\NodeJSProjects\ParkingHouse\node_modules\sequelize\lib\dialects\postgres\connection-manager.js:110:20
at Connection.<anonymous> (D:\NodeJSProjects\ParkingHouse\node_modules\pg\lib\client.js:186:5)
at emitOne (events.js:96:13)
at Connection.emit (events.js:188:7)
at Socket.<anonymous> (D:\NodeJSProjects\ParkingHouse\node_modules\pg\lib\connection.js:86:10)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at emitErrorNT (net.js:1278:8)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9)
name: 'SequelizeConnectionError',
message: 'read ECONNRESET',
parent:
{ Error: read ECONNRESET
at exports._errnoException (util.js:1022:11)
at TCP.onread (net.js:569:26) code: 'ECONNRESET', errno: 'ECONNRESET', syscall: 'read' },
original:
{ Error: read ECONNRESET
at exports._errnoException (util.js:1022:11)
at TCP.onread (net.js:569:26) code: 'ECONNRESET', errno: 'ECONNRESET', syscall: 'read' } }
一段时间后,请求重复,然后我从db获取数据。 我发现了类似的主题Node js ECONNRESET,但我没有找到答案。
答案 0 :(得分:1)
你正在失去联系。可能你没有在你的框架中调用next()。或者不要关闭交易。 这种结构没有意义:
.then(function (foundUser) {
return foundUser;
}).catch(function (err) {
//get here the exception
return err;
});
删除它。然后将控制器重写为
const user = await authorize(req);
if (!user) {
res.status(401).send('Authorization required');
return next();
}
res.status(200).send('All ok');
next();
如果出错,您的框架应自动为您提供500。如果你想手动处理它,请使用try {await Promise} catch(err){} 如果您使用的东西还不支持等待/异步,请查看http://koajs.com/
答案 1 :(得分:1)
问题在于防病毒F-Secure,改变它并且一切正常。 一些问题: https://community.f-secure.com/t5/Business/DeepGuard-seems-to-cause/td-p/88447
答案 2 :(得分:0)
我今天有类似的错误
{
error: {
Error: write ECONNRESET at WriteWrap.afterWrite (net.js:788:14) errno: 'ECONNRESET',
code: 'ECONNRESET', syscall: 'write'
}
}
您需要设置数据库的最大池,或者避免同时发送多个。
这里有一个github线程可以为您提供帮助。