为什么 MongoDB 在 client.connect 上超时?

问题描述 投票:0回答:2

我正在尝试从节点/express 连接到我的 mongodb,并且在尝试连接时收到连接超时错误。这是我正在与 atm 合作寻找解决方案的代码。

    await client.connect().then((res:any) => console.log(res)

这是给出的错误代码。

MongoServerSelectionError: connect ETIMEDOUT 52.64.110.205:27017

到目前为止,我已经尝试添加额外的超时参数,包括

keepAlive=true&socketTimeoutMS=360000&connectTimeoutMS=360000

我还尝试使用不同的用户名/密码连接到另一个集群并收到相同的错误。我不认为这是 env 变量的错误,因为所有其他 .env 变量都在工作。我认为值得一提的是,这个功能在我放入后的第一天或两天内一直有效。

以下是整个函数。为了调试目的,我已经注释掉了一些部分。无论哪种方式,它都会返回相同的错误,所以我认为它只能与连接有关。

export const handleCreateRequestDB = async (input: any) => {
    console.log(`creating new user in DB @ ${input}`)
    const createUserAccount = async (client: any, newUser: object) => {
        await client.connect().then((res:any) => console.log(res)
            // await client.db('onlinestore').collection('user_data').insertOne(newUser).then((result: any) => {
            //     console.log(result)
                // return result
            // })
        )
    }
    try {
        
            createUserAccount(client, input)
                .then((result) => {return result})
        

    } catch (e) {
        console.error(e);
        return false
    }
    // finally {
    //     await client.close()
    // }
}
node.js mongodb error-handling connection-timeout
2个回答
0
投票

在大家的帮助下,我解决了这个问题。自从我创建 Atlas 以来,我的 IP 似乎已发生变化,要解决此问题,我只需要添加更新的 IP 地址。 mongo 的连接超时错误也可能是由访问限制引起的,例如用户名/密码,或者就我而言,是我自己的服务的 IP 禁止。


0
投票

只是想告诉你,你的回答帮助我,一位来自南美的开发人员,成功找到了他的问题的解决方案,并在你最初发帖两年后为其他人构建了解决方案。

开发者的利他主义是值得研究的。谢谢,欧普!

© www.soinside.com 2019 - 2024. All rights reserved.