我是Node.js和mongoDB Atlas的新手。 我在使用node.js3.0版或更高版本连接字符串连接到Mongo Atlas时遇到了一个问题。
const MongoDB = 'mongodb+srv://<user>:<password>@cluster0-nnezr.mongodb.net/<dbname>?retryWrites=true&w=majority'
当我使用这个连接字符串时,会出现以下错误-
MongoDB连接错误:错误:querySrv Etimeout_Mongodb._TCP.Cluster0-nnezr.MongoDB.net at QueryReqWrap.OnResolve[as oncomplete](Dns.js:203:19){errno:未定义,代码:“ETIMEOUT”,系统调用:“Query SRV”,主机名:“_MongoDB._TCP.Cluster0-nnezr.MongoDB.net”}(节点:38809)未处理PromiserEjectionWarning:错误:QueryReqWrap.OnResolve[as oncomplete]querySrv 此错误可能是由于不带catch块的异步函数内部引发的,或者是由于拒绝了未用。catch()处理的承诺。 要在未处理的承诺拒绝时终止节点进程,请使用CLI标志--unhandled-rejections=strict
(请参阅https://nodejs.org/api/CLI.html#CLI_unhandled_rejections_mode)。 (拒绝ID:1)(node:38809)[DEP0018]拒绝警告:未处理的承诺拒绝被拒绝。 将来,没有处理的承诺拒绝将使用非零退出代码终止node.js进程。
我找到了一个变通方法,使用以前的Node.js2.2.12版本的连接字符串-
mongodb://<user>:<password>@cluster0-shard-00-00-nnezr.mongodb.net:27017,cluster0-shard-00-01-nnezr.mongodb.net:27017,cluster0-shard-00-02-nnezr.mongodb.net:27017/<dbname>?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true&w=majority
连接时,我必须添加{UseUnifiedTopology:true}
mongoose.connect(mongoDB, { useNewUrlParser: true, useUnifiedTopology: true });
有人能给我一点关于我在新的连接字符串上做错了什么的洞察力吗?
谢啦!
有写用户,密码,也许还有数据库,
const MongoDB = 'mongodb+srv://<user>:<password>@cluster0-nnezr.mongodb.net/<dbname>?retryWrites=true&w=majority'
user=您的mongodb用户名
password=您的mongodb密码
dbname=数据库名称
不要忘记在MongoDB Atlas中创建一个新用户。