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 test
mongoose.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文件就是一张表(一个集合)的可操作对象