Express 为每个AWS无服务器函数调用创建MongoDB连接
我已经用无服务器设置了Express js并连接到mongoDb atlas。 代码工作正常,但它会为每个调用创建一个连接。我也尝试过缓存方法,但没有成功。 下面是我的代码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
// 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没有在功能完成后关闭连接
- 有几件事需要检查: