初次使用MongoDB和mongoose

本文介绍了MongoDB和Mongoose,Mongoose是基于node - mongodb - native开发的MongoDB nodejs驱动,能让NodeJS操作Mongodb更灵活简单。还提及了MongoDB连接地址和端口设置,以及查看存储数据的方法,同时阐述了MongoDB和Mongoose中的相关概念及关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MongoDB和mongoose

Mongoose是MongoDB的一个对象模型工具,是基于node-mongodb-native开发的MongoDB nodejs驱动,可以在异步的环境下执行。同时它也是针对MongoDB操作的一个对象模型库,封装了MongoDB对文档的的一些增删改查等常用方法,让NodeJS操作Mongodb数据库变得更加灵活简单。

它的作用就是,在程序代码中,定义一下数据库中的数据格式,然后取数据时通过它们,可以把数据库中的 document 映射成程序中的一个对象,这个对象有 .save .update 等一系列方法,和 .title .author 等一系列属性。在调用这些方法时,odm 会根据你调用时所用的条件,自动转换成相应的 mongodb shell 语句帮你发送出去。自然地,在程序中链式调用一个个的方法要比手写数据库操作语句具有更大的灵活性和便利性。

const mongoose = require('mongoose')
const db = 'mongodb://localhost/jinghong'

// 用原生Promise代替mongoose中的promise
mongoose.Promise = global.Promise

exports.connect = () => {
  let connectLimit = 0
  return new Promise((resolve, reject) => {
    if (process.env.NODE_ENV !== 'production') {
      mongoose.set('debug', true)
    }

    mongoose.connect(db, { useNewUrlParser: true })

    mongoose.connection.on('disconnected', () => {
      if (connectLimit < 5) {
        // 断开重连
        mongoose.connect(db,  { useNewUrlParser: true })
        connectLimit ++
      } else {
        const err = new Error('链接失败超过五次')
        reject(err)
      }
    })

    mongoose.connection.on('error', err => {
      reject(err)
    })

    // 链接成功
    mongoose.connection.once('open', () => {
      const Dog = mongoose.model('Dog', {
        name: String
      })
      const catty = new Dog({
        name: 'supper catty'
      })

      catty.save().then(() => {
        //存储成功
        console.log('catty存储成功')
      })

      resolve('链接成功')
    })
  })
}

其中

const db = ‘mongodb://localhost/jinghong’

localhost 是 mongoDB 所在的地址,端口号省略则默认连接 27017;jinghong 是数据库的名称。

异步调用:

;(async() => {
  try{
    const status = await connect()
    console.log(status)
  } catch (err) {
    console.log(err)
  }
})()


链接失败的时候还可以这样去写

mongoose.connection.on('error', err => {
   throw new Error('制作错误')
})


查看MongoDB存储的数据

在命令行中输入:mongo,接着输入下图所示相关信息即可
这里写图片描述


MongoDB中document、collection、database三个概念



Mongoose中schema、model、entity三个概念

  • Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力
  • Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对
  • Entity : 由Model创建的实体,他的操作也会影响数据库
    它们之间的关系是Schema生成Model,Model创造Entity,Model和Entity都可对数据库操作造成影响,但Model比Entity更具操作性。Model对应collection,Entity对应docment
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值