mongoose是什么
- mongoose的核心是mongoose()构造函数
- mongoose是一个ODM(对象数据模型)。(Object Data Model)
- 使用JS对象的语法来映射MongoDB数据库中的表和document
- collection:数据库中的表。
- Document: 表中的一条记录
- 使用JS对象的语法来映射MongoDB数据库中的表和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数据库
-
启动mongodb数据库
# window系统 服务 => 右键 => 启动 # Mac OS brew services start mongodb/brew/mongodb-community
-
连接数据库(怎么和数据库通信?)
- 可以使用可视化软件Compass
- 非可视化软件:mongosh
mongosh "mongodb://localhost:27017"
-
创建数据库: zhangsanblog
- 使用compass手动创建
- 使用mongosh手动创建
use zhangsanblog
-
创建数据库用户
-
语法
Db.createUser({ user: 'zhangsan', pwd: '123456', roles: [{ role:"readWrite",db:"config"},"clusterAdmin"], roles: ["readWrite"] })
-
方案2:创建云数据库
- 登录Atlas账户
- 创建数据库 : zhangsanblog
- 创建用户: 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))