2017-11-10 135 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不要等待事件循環爲空,而是要繼續並返回結果並凍結容器。 –

回答