Express 为每个AWS无服务器函数调用创建MongoDB连接

Express 为每个AWS无服务器函数调用创建MongoDB连接,express,mongoose,aws-lambda,serverless-framework,aws-serverless,Express,Mongoose,Aws Lambda,Serverless Framework,Aws Serverless,我已经用无服务器设置了Express js并连接到mongoDb atlas。 代码工作正常,但它会为每个调用创建一个连接。我也尝试过缓存方法,但没有成功。 下面是我的代码 // server.js const sls = require('serverless-http') const connectToDatabase = require('./lib/db'); const app = require('./lib/app') connectToDatabase(); module.ex

我已经用无服务器设置了Express js并连接到mongoDb atlas。 代码工作正常,但它会为每个调用创建一个连接。我也尝试过缓存方法,但没有成功。 下面是我的代码

// 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
}

有几件事需要检查:

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

  • 确保mongoose没有在功能完成后关闭连接


    • 有几件事需要检查:

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

      • 确保mongoose没有在功能完成后关闭连接


      执行一个函数大约需要1500毫秒。我到处找,找不到办法把猫鼬藏起来。但是Mongodb本机nodejs驱动程序有一个解决方案,执行一个函数需要1500毫秒。我到处找,找不到办法把猫鼬藏起来。但是Mongodb原生nodejs驱动程序有一个解决方案。