当前位置: 首页 > news >正文

Error mongodb connect: 使用Mongoose连不上mongodb官方数据库

起因

使用mongoose官方文档的connect连Mongodb cloud免费数据库,始终连不上

await mongoose.connect('mongodb://127.0.0.1:27017/test');

就一句代码,一个api,一个url多简单。死活连不上,困扰了我好久。
原本一开始我没有用mongoose,直接用的mongodb官方库创建连接没问题,还能增删改查

const client = new MongoClient(url)

同样一个api,一个url,就能连上Mongodb数据库。

分析

Mongodb cloud免费数据库url一般是:
mongodb+srv://test:<db_password>@notes.wwwdz.mongodb.net/?retryWrites=true&w=majority&appName=notes

而mongoose 给的示例代码里面的url是 mongodb://127.0.0.1:27017/test
很明显前者多了个 +srv, 同时后者通过/test 来制定数据库名称。但是Mongodb Cloud的免费数据库url是通过?&appName=notes 参数的形式指定!!!

解决

认真查看了mongoose官方文档找到了 mongoose.connect() 这个api的文档!
他有两个参数:

  1. 第一个是url,也就是数据库地址
  2. 第二个是options,一个对象
    贴一下原话:
    ···
    The connect method also accepts an options object which will be passed on to the underlying MongoDB driver.
    ···
    也就是一个options对象,这个对象会被传给底层的mongodb 驱动器
    继续看文档,当看到mongodb+srv 的时候,就知道找到问题所在了!!!
    在这里插入图片描述
    用mongoose连mongodb cloud免费数据库的时候要手动加上 dbName
    url可以直接是从mongodb粘贴出来的那个url。
await mongoose.connect(url, {dbName: '数据库名称'});

总结

很扯淡的一个问题,折腾了好几个小时。一开始我还以为连接copy错了。还特地把url放到.env环境变量的文件中去,但是用mongodb 默认的client连接就没问题!但是一用mongoose就出错。没想到是mongoose需要通过options对象多配置一下数据库名称!!!得多看文档不要想当然认为。


http://www.mrgr.cn/news/22941.html

相关文章:

  • 阿里云服务器K8S安装教程
  • 重磅发布!《人工智能安全治理框架》1.0版来了
  • 深圳MES系统在制造业的应用与发展
  • 三十四、模型绑定与验证
  • RedisTemplate操作Redis
  • C++复习day05
  • Python列表浅拷贝的陷阱与破解之道
  • 29个横幅广告及详细点评,帮您优化广告效果
  • 苹果账号登录后端验证两种方式 python2
  • Qt工程使用MQTT-C库与mqtt服务器数据通信
  • 【C++11 ——— 右值引用和移动语义】
  • 久久派搭建风电系统网站(基于mariadb数据库)
  • PVE动态核显直通
  • 一个数组向左移动i位(学会分析问题,找出规律,不要小看任何一个小程序;小程序都是实现大的功能的基础--体现问题分解的思想)
  • Python数据分析高频面试题及答案
  • 使用gdb跟踪调试linux内核
  • 仕考网:公务员国考考什么?
  • 三维点云骨架提取(以树木为例 python 代码)
  • 月考结束老师如何发布成绩查询?
  • 时间戳和日期相互转换+检验日期合法性功能C语言