node.js - 运行良好几个小时后,TypeOrm 查询无法从 Nodejs 应用程序中的 postgres 服务器获取数据
问题描述
我的 nodejs API 可以正常运行几个小时,然后 API 不会将数据返回给客户端。调试后,我发现 TypeOrm 无法从远程 postgres 服务器查询数据,即使 postgres 服务器已连接。Nodejs 应用程序中的查询没有错误。我可以从 pgAdmin 的远程 postgres 数据库中查询数据。app.ts 代码
const conn = await createConnection({
host: process.env.TYPEORM_HOST,
password: process.env.TYPEORM_PASSWORD,
type: 'postgres',
username: process.env.TYPEORM_USERNAME,
database: process.env.TYPEORM_DATABASE,
port: Number(TYPEORM_PORT),
logging: TYPEORM_LOGGING === 'true' ? true : false,
synchronize: TYPEORM_SYNCHRONIZE === 'true' ? true : false,
entities: [UserEntity],
});
console.log(conn.options.database);
////#### Middleware Section ####/////
const apolloServer = new ApolloServer({
schema: await CreateSchema(),
subscriptions: {
path: `${ENDPOINT_PATH}`,
},
uploads: false,
//tracing: true,
context: ({ req, res }: any) => ({
req,
res,
...dataLoaderInject,
}),
});
const app = Express();
const whitelist: any = process.env.ENDPOINT_CORS?.split(',').map((x) =>
x.trim()
);
var corsOptions = {
origin: function (origin: any, callback: any) {
if (whitelist.indexOf(origin) !== -1) {
callback(null, true);
} else {
callback(null, false);
}
},
credentials: true,
};
app.use(cors(corsOptions));
app.use(graphqlUploadExpress({ maxFileSize: 500000000, maxFiles: 50 }));
app.use(cookieParser());
apolloServer.applyMiddleware({ app, cors: false, path: ENDPOINT_PATH });
const httpServer = http.createServer(app);
apolloServer.installSubscriptionHandlers(httpServer);
httpServer.listen(ENDPOINT_PORT, () => {
//Register jobScheduler here
JobSchedulerService.sendReminder();
console.log(
`Server started at ${ENDPOINT}:${ENDPOINT_PORT}${ENDPOINT_PATH}`
);
});
TypeOrm 无法从远程 postgres 服务器返回结果的 POST 请求。
app.post('/user', async (req, res) => {
let token = req.cookies.UserCookie;
if (!token) {
console.log('token is not valid ' + token);
return res.send({ ok: false, accessToken: '' });
}
let payload: any;
try {
payload = verify(token, process.env.REFRESH_TOKEN_SECRET!);
} catch (err) {
console.log(err);
return res.send({ ok: false, accessToken: '' });
}
const user = await
getRepository(UserEntity)
.createQueryBuilder()
.where('"ID"=:ID', { ID: payload.userID })
.getOne() // request die here , no error , does not respond anything
.catch( err => {
console.log(err, "User Query error")
})
if (!user) {
console.log('User not found');
return res.send({ ok: false, accessToken: '' });
}
堆栈版本
Postgres 12
Nodejs : v12.16.3
npm : 6.14.4
"pg": "^8.3.3"
"typeorm": "^0.2.26",
"express": "^4.17.1",
"node-cron": "^2.0.3",
您的回复将不胜感激谢谢。
解决方案
推荐阅读
- php - SQL:上周没有记录
- c# - xamarin.android 保存列表
在 OnSaveInstaneState - laravel - laravel 查询生成器查询有什么问题?
- vb.net - 如何在 VB.net 的浏览器中获取活动选项卡的 URL
- scala - 在 spark submit 中访问 spark 集群模式
- python - (Python) Networkx - 定义自己的 pos 字典
- warnings - 更改后 PrimeNG 下拉菜单变为红色
- python - 在 Python 中创建 CSV 文件时出现错误“numpy.float64 对象不可迭代”
- xml - Odoo 路由给出“内部服务器错误”错误页面
- c# - XSD 枚举整数值