为每个AWS无服务器功能调用创建的MongoDB连接

时间:2019-06-24 17:52:32

标签: express mongoose aws-lambda serverless-framework aws-serverless

我已经用Serverless设置了Express js并连接到mongoDb地图集。 该代码可以正常工作,但是可以为每个呼叫创建一个连接。我也尝试了缓存方法,但是没有运气。 这是我的下面的代码

// server.js
const sls = require('serverless-http')
const connectToDatabase = require('./lib/db');

const app = require('./lib/app')
connectToDatabase();
module.exports.run = sls(app)



//db.js
const mongoose = require('mongoose')
var Promise = require("bluebird");
// console.log("Connecting to " + process.env.DB);
const connection = {}
mongoose.Promise= Promise;

module.exports = async () => {
  if (connection.isConnected) {
    console.log('=> using existing database connection')
    return
  }

  console.log('=> using new database connection')
  const db = await mongoose.connect(process.env.DB,{useNewUrlParser:true})
  connection.isConnected = db.connections[0].readyState
}

1 个答案:

答案 0 :(得分:0)

有几件事要检查:

  • 您的Lambda函数执行需要多长时间?您的函数一次只能处理一个请求。如果您在第一个请求完成之前发出第二个请求,则函数的新实例将启动。

  • 确保在函数完成后猫鼬不会关闭连接。