2017-11-10 66 views
0

我已经设置了一个AWS lambda来为我做一些数据保存到MongoDB。我想重新使用连接,所以每次调用lambda时都不必创建新的连接。但是如果我打开db连接,Lambda处理程序的回调不起作用!AWS Lambda回调被开放的mongodb连接阻塞了吗?

有没有什么我做错了多数民众赞成创造这种​​行为?这是我的代码:

var MongoClient = require('mongodb').MongoClient 

exports.handler = (event, context, callback) => { 
    MongoClient.connect(process.env.MONGOURL, function (err, database) { 
     //database.close(); 
     callback(null, "Successful db connection") 
    }); 
} 
+0

[从文档:(http://docs.aws.amazon.com/lambda/latest/dg/lambda-introduction.html)*“在你的lambda函数代码的任何声明(外例如,如果您的Lambda函数建立了数据库连接,而不是重新建立连接,那么原来的连接将在随后的调用中使用。 “* –

+0

所以”简单地说“**相同的答案**用于持久化和共享模块化代码(或函数)之间的连接,也适用于一般nodejs应用程序适用于此。请参阅[如何管理Node.js Web应用程序中的MongoDB连接?](https://stackoverflow.com/questions/10656574/how-do-i-manage-mongodb-connections-in-a-node-js- Web应用程序)。它只是你要实现的'getDB()'函数需要被声明为任何“处理器”代码的“外部”,并且在处理程序中你只需获取该连接的当前“实例”,这是事实“持久化” 。就像文档说的一样。 –

+0

@NeilLunn必须告诉Lambda不要等待事件循环为空,而是要继续并返回结果并冻结容器。 –

回答