7. Mongoose 入门

  1. Mongoose 是在 node.js 异步环境下对 mongodb 进行便捷操作的对象模型工具。Mongoose NodeJS 的驱动,不能作为其他语言的驱动。其有两个特点:

1、通过关系型数据库的思想来设计非关系型数据库

2、基于 mongodb 驱动,简化操作

7.1 基本使用

  1. 安装
  1. npm i mongoose
  1. 连接数据库
  1. const mongoose = require('mongoose')
  2. mongoose.connect('mongodb://localhost/test')
  3. // 如果不指定路径,则会自动连接test数据库,等同于use test
  4. mongoose.connect('mongodb://username:password@localhost:27017/vblog');
  1. 定义Schema

    1. schema mongoose 里会用到的一种数据模式,可以理解为表结构的定义;每个 schema 会映射到 mongodb 中的一个 collection,它不具备操作数据库的能力
  1. const {Schema} = require('mongoose')
  2. const UserSchema = Schema({
  3. name: String,
  4. age:Number,
  5. status: {
  6. type: Number,
  7. default: 1
  8. }
  9. })
  1. 创建数据模型

    1. 定义Schema之后,就是生成Model,相当于collection,可以操作数据库。必传两个参数,第三个参数选填
  • 参数1: 模型名称,需首字母大写。模型会和模型名称相同的复数的集合建立连接
  • 参数2: Schema
  • 参数3: 数据库集合名称。传入本参数后,模型操作本参数对应的集合
  1. const {model} = require('mongoose')
  2. const User = model('User', UserSchema) // 与users集合关联
  1. 增删改查

    1. 详见[语雀笔记]([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文件对应一张表(一个集合)的可操作对象

  1. // db.js中
  2. const mongoose = require('mongoose');
  3. mongoose.connect('mongodb://admin:zxf123@localhost:4396/vblog', err => {
  4. if (err) {
  5. console.log('连接失败');
  6. return;
  7. } else {
  8. console.log('链接成功');
  9. }
  10. });
  11. // 将mongoose导出,方便后续操作
  12. module.exports = mongoose;
  13. // require到的对象就是整个数据库的可操作对象
  1. // blog.js中
  2. const { Schema, model } = require('./db');
  3. const BlogSchema = new Schema({
  4. visible: {},
  5. created_at: String,
  6. id: Number,
  7. idstr: String,
  8. mid: String,
  9. mblogid: String,
  10. customIcons: []
  11. });
  12. // 直接返回数据模型,可以直接操作集合
  13. module.exports = model('Blog', BlogSchema, 'blog');
  14. // 直接一个js文件就是一张表(一个集合)的可操作对象