Mongoose lambda 示例每次被触发时都会创建一个新连接

Posted

技术标签:

【中文标题】Mongoose lambda 示例每次被触发时都会创建一个新连接【英文标题】:Mongoose lambda example creates a new connection everytime it gets triggered 【发布时间】:2020-01-01 18:25:30 【问题描述】:

我一直在关注官方 mongoose 文档,并将 mongoose 连接构建到我的处理程序中:

这是在我的处理程序文件的根目录中。

let conn = null;
const uri = process.env.ORDERS_URI;

mongoose.connection.on('connected', () => 
  Logger.log('Mongoose default connection open to ' + uri);
);

现在在我的实际处理函数中:

export const handler: Handler = async (event: any, context: Context) => 
  if (conn == null) 
    console.log('CONN IS NULL');
    conn = await mongoose.connect(uri, 
      bufferCommands: false, // Disable mongoose buffering
      bufferMaxEntries: 0, // and MongoDB driver buffering
      useNewUrlParser: true,
    );
  

  context.callbackWaitsForEmptyEventLoop = false;
  cachedServer = await bootstrapServer();
  return proxy(cachedServer, event, context, 'PROMISE').promise;
;

但是,在使用无服务器离线测试时,每次点击我都会启动一个新连接。

命中 1:1 新的“已连接到猫鼬”消息 点击 2:2 新的“已连接到猫鼬”消息...

等等……

我尝试通过一些变化来移动它们,但无论哪种方式我最终都会遇到相同的“错误”。

如果我尝试改用 mongoose.createConnection —— 实际上连接到数据库在我放置的任何地方都无法正常工作。

【问题讨论】:

【参考方案1】:

这是因为无服务器离线执行需要在每次调用时缓存失效。 AWS Lambda 并非如此。您可以使用--skipCacheInvalidation 禁用此行为,但似乎be gone anyway。

【讨论】:

以上是关于Mongoose lambda 示例每次被触发时都会创建一个新连接的主要内容,如果未能解决你的问题,请参考以下文章

在单个 S3 对象上传事件上触发多个 lambda

每次添加新项目时都会触发 RadListView SelectedIndexChanged

每次刷新应用程序时都会触发 Flutter web Firebase onAuthStateChanges

AppWidgetProvider - 每次对任何 AppWidget 文件进行更改时都会触发 onUpdate 吗?

从本地机器发布 SNS 消息并测试 Lambda

函数式编程———内联函数