首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AWS Lambda Mongodb错误:拓扑被破坏

AWS Lambda Mongodb错误:拓扑被破坏
EN

Stack Overflow用户
提问于 2018-02-15 05:06:42
回答 1查看 945关注 0票数 1

我在Node中创建了一个Lambda函数,通过这个函数将数据存储到Mongodb:

代码语言:javascript
运行
复制
const Connection = MongoClient.connect(...);
const demoColl = Connection.collection('demo');
demoColl.bulkWrite(bulkArray...);
client.close();

我已经通过invoke local进行了顺利的测试,在一个接一个地运行时也是成功的。

但是我的应用程序每秒调用函数3-5次,lambda显示此错误消息。

“errorMessage”:“拓扑被破坏”,"errorType":"MongoError“

我已经做了一项研究,当函数仍然运行时,它会导致关闭数据库。如何防止其中一个连接关闭不会影响另一个Lambda功能?

EN

回答 1

Stack Overflow用户

发布于 2018-02-15 06:34:51

代码语言:javascript
运行
复制
import * as mongoose from "mongoose";

(<any>mongoose).Promise = global.Promise;
let cacheDb: mongoose.Connection = null;
export let connect = () => {
    if (cacheDb && mongoose.connection.readyState === 1) {
        return cacheDb;
    } else {
        // Mongoose config and setting global Promise
        mongoose.connect(process.env.MONGODB_URI, {
            promiseLibrary: global.Promise,
            connectTimeoutMS: 20 * 1000
        }).then(() => {
            cacheDb = mongoose.connection;
            return cacheDb;
        }).catch((err) => {
            console.log(err);
        });
    }
};
export let disconnect = () => {
    mongoose.disconnect();
}

我有一个文件,它缓存MongoDB连接并在可用的情况下重用。只需确保它在lambda处理程序之外。

而且,关闭连接不是一个好主意,因为这将使您的lambda在每次调用lambda时都要连接--这将增加DB和Lambda执行时间的负担。

参考资料:https://blog.cloudboost.io/i-wish-i-knew-how-to-use-mongodb-connection-in-aws-lambda-f91cd2694ae5

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48800271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档