我们正在AWS Lambda上运行nest.js,类似于:https://keyholesoftware.com/2019/05/13/aws-lambda-with-nestjs/
不幸的是,nest.js的Mongoose部分不会关闭数据库连接,因此即使没有人在我的MongoDB集群上也达到了连接限制。
猫鼬文档的最佳做法是这样的(在上下文之外定义):https://mongoosejs.com/docs/lambda.html
有人知道如何与nest.js框架结合使用吗?
答案 0 :(得分:0)
我的第一印象是显式关闭连接或设置超时。但是,对于这两个选项,我似乎都找不到任何接近nest.js官方文档的东西。
因此:您有一个不会自动关闭空闲连接的数据库,以及一个从不关闭连接的中间件,因此您的系统正在被插入。您可以尝试在它们之间放置一些东西,以等待空闲并断开连接(甚至可能会说服某些防火墙这样做)。但是,考虑到这些产品多么不可能和/或没有文档证明的正确连接处理,我建议您重新考虑选择的技术。
答案 1 :(得分:0)
在执行函数以关闭猫鼬连接之后,必须调用 app.close()。
AWS Cognito Lambda触发器的示例:
import { INestApplicationContext } from '@nestjs/common';
let cachedApp: INestApplicationContext;
async function bootstrap() {
if (!cachedApp) {
cachedApp = await NestFactory.createApplicationContext(
PreTokenGenerationModule
);
}
return cachedApp;
}
export async function handler(
event: CognitoUserPoolTriggerEvent,
context: Context,
callback: Callback
) {
const app = await bootstrap();
const preTokenGenerationService = app.get(PreTokenGenerationService);
await preTokenGenerationService.execute(event, context, callback);
app.close();
}