Mongoose、Schema()

mongoose是什么

  • mongoose的核心是mongoose()构造函数
  • mongoose是一个ODM(对象数据模型)。(Object Data Model)
    • 使用JS对象的语法来映射MongoDB数据库中的表和document
      • collection:数据库中的表。
      • Document: 表中的一条记录

Schema()

  • Schema()是一个构造函数。
  • Schema()构造函数用于创建实例对象。
  • 每一个schema实例对象映射一个MongoDB数据库表。
    • 定义表中的document结构

语法

new Schema(obj,options)
new Schema({定义数据库表结构},{选项对象:描述前面的表})

返回值

返回schema对象

示例:创建一个blogSchema表,用来存储博客的文章

const blogSchema = new Schema({
  title:{
    type: String,
    required: true
  },
  author:{
    type: String,
    required: true
  },
  snippet: {
    type: String,
    required: true
  },
  body:{
    type: String,
    required: true
  }
},{})

创建数据库

方案1:创建本地mongodb数据库

  1. 启动mongodb数据库

    # window系统
    服务 => 右键 => 启动
    # Mac OS
    brew services start mongodb/brew/mongodb-community 
    
  2. 连接数据库(怎么和数据库通信?)

    1. 可以使用可视化软件Compass
    2. 非可视化软件:mongosh
mongosh "mongodb://localhost:27017"
  1. 创建数据库: zhangsanblog

    1. 使用compass手动创建
    2. 使用mongosh手动创建
      use zhangsanblog
  1. 创建数据库用户

    1. 语法

      Db.createUser({
        user: 'zhangsan',
        pwd: '123456',
        roles: [{ role:"readWrite",db:"config"},"clusterAdmin"],
        roles: ["readWrite"]
      })
      

方案2:创建云数据库

  1. 登录Atlas账户
  2. 创建数据库 : zhangsanblog
  3. 创建用户: zhangsan Zxcvbn123456

连接字符串

定义

连接字符串特指在App开发过程中连接数据库的地址。

语法

"协议://用户名:密码@数据库地址/数据库名"

云数据库的连接字符串

从云数据库复制的连接字符串:
'mongodb+srv://<username>:<password>@zhangsanblog.4t6hj0s.mongodb.net/?retryWrites=true&w=majority'
用你的用户名和密码替换<username>和<password>
'mongodb+srv://zhangsan:Zxcvbn123456@zhangsanblog.4t6hj0s.mongodb.net/?retryWrites=true&w=majority'

本地数据库的连接字符串

"mongodb://zhangsan:123456@127.0.0.1:27107/zhangsanblog"
"mongodb://zhangsan:123456@localhost:27107/zhangsanblog"

Node和MongoDB的通信

通信方式有两种:

  • Mongodb模块:
    • mongodb模块是Node.js原生提供的与mongoDB数据库通信的API。
  • Mongoose模块:
    • 是第三方提供的在Node平台与MongoDB数据库通信的方式。
    • Mongoose是一个库。
    • 库:就是函数的集合。
    • Mongoose库包裹Node API。

使用Mongoose模块连接数据库

const mongoose = require('mongoose')

mongoose.connect(uri)
    .then((result) => {
        console.log('数据库已经连接')
    })
    .catch( err => console.log(err))

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容