当我的 lambda 函数被激活时,它连接到我的 MongoDB Atlas 实例,显着减慢响应 1000-2000ms
我可以缓存数据库连接,但只有在最后一个请求之后快速发出请求并且不会持续一个小时后发出的请求时,缓存才会持续。
是否有任何本机 AWS DB 可以避免此问题并每次都允许即时连接?(documentDB、DynamoDB 等)
代码
let response
import { MongoClient } from 'mongodb'
let cachedDb = null
const uri =
'mongodb+srv://XXXX'
function connectToDatabase(uri) {
if (cachedDb && cachedDb.serverConfig.isConnected()) {
console.log('=> using cached database instance')
return Promise.resolve(cachedDb)
}
const dbName = 'test'
return MongoClient.connect(uri, { useNewUrlParser: true, useUnifiedTopology: true }).then(
client => {
cachedDb = client.db(dbName)
return cachedDb
}
)
}
export async function lambdaHandler() {
try {
const client = await connectToDatabase(uri)
const collection = client.collection('users')
const profile = await collection.findOne({ user: 'myuser' })
response = profile
}
} catch (err) {
console.log(err)
return err
}
return response
}