MongoError:池在被 lambda 调用时被破坏,但不是被来自同一服务器的代码

问题描述

今天早上突然,我们基于 lambda 的端点无法连接到基于 ec2 的 mongodb。它只会返回错误 { MongoError: pool destroyed

但是我的 nodejs 代码与 mongodb 位于同一 ec2 服务器中,可以毫无问题地访问 mongodb。下面是我们从每个 lambda 函数调用的 mongodb 连接代码

const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
let isConnected;
module.exports = connectToDatabase = () => {
 if (isConnected) {
   console.log('=> using existing database connection');
   return Promise.resolve();
 }
 console.log('=> using new database connection');
 return mongoose.connect('mongodb://123.456.789.123:27017/musleh-api')
   .then(db => {
     isConnected = db.connections[0].readyState;
   });
};

上面的代码调用

const connectToDatabase = require("./../../db_mongo.js");
const handler = (req,res) => {

connectToDatabase().then(() => {
        console.log("67 dlm connectToDatabase")
        processSubmission(email,password).catch(function(err){
          console.log("69 err");
          console.log(err);
          res.status(400).send({ success:false,msg: err.toString() });
          return false;
        })
    });
}

大约半小时后,突然我们的 lambda 可以再次访问我们的 ec2 mongodb,没有任何问题。所以我们真的很困惑为什么会发生这种情况。有什么线索吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)