我正在尝试从节点/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()
// }
}
在大家的帮助下,我解决了这个问题。自从我创建 Atlas 以来,我的 IP 似乎已发生变化,要解决此问题,我只需要添加更新的 IP 地址。 mongo 的连接超时错误也可能是由访问限制引起的,例如用户名/密码,或者就我而言,是我自己的服务的 IP 禁止。
只是想告诉你,你的回答帮助我,一位来自南美的开发人员,成功找到了他的问题的解决方案,并在你最初发帖两年后为其他人构建了解决方案。
开发者的利他主义是值得研究的。谢谢,欧普!