7. Mongoose 入门
Mongoose 是在 node.js 异步环境下对 mongodb 进行便捷操作的对象模型工具。Mongoose 是 NodeJS 的驱动,不能作为其他语言的驱动。其有两个特点:
1、通过关系型数据库的思想来设计非关系型数据库
2、基于 mongodb 驱动,简化操作
7.1 基本使用
- 安装
npm i mongoose
- 连接数据库
const mongoose = require('mongoose')mongoose.connect('mongodb://localhost/test')// 如果不指定路径,则会自动连接test数据库,等同于use testmongoose.connect('mongodb://username:password@localhost:27017/vblog');
定义Schema
schema 是 mongoose 里会用到的一种数据模式,可以理解为表结构的定义;每个 schema 会映射到 mongodb 中的一个 collection,它不具备操作数据库的能力
const {Schema} = require('mongoose')const UserSchema = Schema({name: String,age:Number,status: {type: Number,default: 1}})
创建数据模型
定义Schema之后,就是生成Model,相当于collection,可以操作数据库。必传两个参数,第三个参数选填
- 参数1: 模型名称,需首字母大写。模型会和模型名称相同的复数的集合建立连接
- 参数2: Schema
- 参数3: 数据库集合名称。传入本参数后,模型操作本参数对应的集合
const {model} = require('mongoose')const User = model('User', UserSchema) // 与users集合关联
增删改查
详见[语雀笔记]([https://www.yuque.com/docs/share/212e1dd4-afee-47a7-ac3f-401a3597038b?#](https://www.yuque.com/docs/share/212e1dd4-afee-47a7-ac3f-401a3597038b?#) 《24. 基础-mongoose基本使用》)
7.2 模块化
一般数据库的模块化放到src/model文件夹下面,其中db.js用于连接数据库,并把mongoose暴露出来;其他js文件导出该mongoose的model模型,即可实现一个js文件对应一张表(一个集合)的可操作对象
// db.js中const mongoose = require('mongoose');mongoose.connect('mongodb://admin:zxf123@localhost:4396/vblog', err => {if (err) {console.log('连接失败');return;} else {console.log('链接成功');}});// 将mongoose导出,方便后续操作module.exports = mongoose;// require到的对象就是整个数据库的可操作对象
// blog.js中const { Schema, model } = require('./db');const BlogSchema = new Schema({visible: {},created_at: String,id: Number,idstr: String,mid: String,mblogid: String,customIcons: []});// 直接返回数据模型,可以直接操作集合module.exports = model('Blog', BlogSchema, 'blog');// 直接一个js文件就是一张表(一个集合)的可操作对象
