【js学习笔记】mongoose连接mongodb数据库失败问题解决

MongooseError: OperationXXXbuffering timed out after 10000ms

输出错误信息,发现数据库连接不上

const mongoose  = require('mongoose')
mongoose.connect('mongodb://127.0.0.1:27017/ele-admin') 
.then(() => console.log('数据库连接成功'))
.catch(err => console.log('数据库连接失败', err));
数据库连接失败 
TypeError [ERR_INVALID_URL]: Inva
    at onParseError (internal/url.js:279:9)
    at new URL (internal/url.js:355:5)
    at isAtlas (C:\Users\86176\ele-admin\node_mo\topology\isAtlas.js:17:17)
    at MongooseServerSelectionError.assimilateErmin\node_modules\mongoose\lib\error\serverSelect
    at C:\Users\86176\ele-admin\node_modules\mon3:36 {
  input: '127.0.0.1:27017',
  code: 'ERR_INVALID_URL'
}

将127.0.0.1改成localhost,还是报错

const mongoose  = require('mongoose')
mongoose.connect('mongodb://localhost:27017/ele-admin') 
.then(() => console.log('数据库连接成功'))
.catch(err => console.log('数据库连接失败', err));

MongooseServerSelectionError: Serorts maximum wire version 5, but this version ofes at least 6 (MongoDB 3.6)

数据库连接失败 MongooseServerSelectionError: Serorts maximum wire version 5, but this version ofes at least 6 (MongoDB 3.6)
    at NativeConnection.Connection.openUri (C:\Umodules\mongoose\lib\connection.js:807:32)
    at C:\Users\86176\ele-admin\node_modules\mon
    at C:\Users\86176\ele-admin\node_modules\monrCallback.js:32:5
    at new Promise (<anonymous>)
    at promiseOrCallback (C:\Users\86176\ele-admib\helpers\promiseOrCallback.js:31:10)
n\node_modules\mongoose\lib\index.js:342:20)    
    at Object.<anonymous> (C:\Users\86176\ele-admin\server\index.js:9:10)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10) {
  reason: TopologyDescription {
    type: 'Unknown',
    servers: Map(1) { 'localhost:27017' => [ServerDescription] },
    stale: false,
    compatible: true,
    heartbeatFrequencyMS: 10000,
    localThresholdMS: 15,
    logicalSessionTimeoutMinutes: undefined     
  },
  code: undefined
}

应该是mongoose和mongodb版本对不上,可以去这个链接查看对应的版本。
[对应版本查看](https://mongoosejs.com/docs/compatibility.html#mongodb-server-version-compatibility)

cmd查看mongodb版本:

mongo --version

package.json查看mongoose版本

  "dependencies": {
    "axios": "^0.27.2",
    "core-js": "^3.8.3",
    "cors": "^2.8.5",
    "element-ui": "^2.4.5",
    "express": "^5.0.0-beta.1",
    "mongoose": "^5.2.1",
    "vue": "^2.6.14",
    "vue-router": "^3.5.1"
  },
  • 重新安装mongodb:
    网上已经有很多教程了,这里只说一个重新安mongodb会出现的问题,原本的mongodb没能正常停止,如何关闭服务
//客户端登录服务,注意,这里通过localhost登录,如果需要远程登录,必须先登录认证才行。
mongo --port 27017
//#切换到admin库
use admin
//关闭服务
db.shutdownServer()
  • 重新安装mongoose:
npm i mongoose@5.2.1 //@指定版本号

mongodb和mongoose版本对应上后就可以正常使用了,具体的使用mongoose对mongodb进行增删改查等操作放在下一篇笔记了。

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
1. 安装mongoose 在命令行中执行以下命令: ``` npm install mongoose ``` 2. 连接数据库 在Node.js中使用mongoose连接数据库需要先引入mongoose模块: ```javascript const mongoose = require('mongoose') ``` 接着使用mongoose.connect()方法连接数据库: ```javascript mongoose.connect('mongodb://localhost:27017/databaseName', { useNewUrlParser: true }) ``` 其中,mongodb://localhost:27017/databaseName是连接数据库的URL,其中localhost为数据库服务器地址,27017MongoDB的默认端口号,databaseName为要连接数据库名称。 { useNewUrlParser: true }是Mongoose的一个选项,以允许在连接时使用新的URL字符串解析器。 3. 定义Schema和Model 在使用mongoose之前,需要先定义Schema和Model。Schema是用来定义数据结构的,Model是由Schema生成的实例。 ```javascript const Schema = mongoose.Schema const userSchema = new Schema({ username: String, password: String, email: String }) const User = mongoose.model('User', userSchema) ``` 以上代码定义了一个名为User的Model,该Model对应的Schema定义了三个属性:username、password和email。 4. CRUD操作 通过定义好的Model可以进行CRUD操作。以下是一些常用的操作: - 新增数据 ```javascript const user = new User({ username: 'Tom', password: '123456', email: 'tom@example.com' }) user.save(function (err, user) { if (err) return console.error(err) console.log(user.username + ' saved to database.') }) ``` - 查询数据 ```javascript User.find(function (err, users) { if (err) return console.error(err) console.log(users) }) ``` - 更新数据 ```javascript User.findOneAndUpdate({ username: 'Tom' }, { password: '654321' }, function (err, user) { if (err) return console.error(err) console.log(user) }) ``` - 删除数据 ```javascript User.deleteOne({ username: 'Tom' }, function (err) { if (err) return console.error(err) console.log('User deleted.') }) ``` 以上代码演示了如何使用mongoose连接MongoDB数据库,并进行CRUD操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值