美文网首页
Mongoose 入门笔记

Mongoose 入门笔记

作者: YeLqgd | 来源:发表于2020-02-20 20:35 被阅读0次

    Mongoose 是什么

    MongoDB.js 是一个官方提供的访问 MongoDB 的 js 库。Mongoose.js 是在 MongoDB.js 基础上的一个封装。后面 Mongoose 即指谓 Mongoose.js。

    基本概念

    Schema

    Schema 是一个与 MongoDB 里的某个 Collection 对应并且规定了 Collection 里 Document 的 shape 的东西。在 Mongoose 里,一切都始于 Schema。一个 schema 实例由 Schema 构造函数创建:

    const mongoose = require('mongoose')
    
    const schema = new mongoose.Schema({
        field1: SchemaType,
        field2: SchemaType
        // ...
    })
    

    SchemaType

    SchemaType 是一个配置 field 的对象,它规定了一个 field 值的 type、getter/setter、对这个 field 进行赋值的时候的 validator 等等。type 包括 String、Number、Date、Buffer、Boolean、Mixed、ObjectId、Array、Decimal128、Map,也可以通过 plugin 自定义。一个具体的 schemaType 基本可以表示为:

    const schemaType = {
        type: String,
        ...SchemaTypeOptions
    }
    // 当没有 SchemaTypeOptions 时与下面等价
    const schemaType1 = String
    

    Model

    调用 mongoose.model(modelName, schema) 得到的结果就是一个 model,所有对 collection 的操作都是基于 model 执行。

    const schema = new mongoose.Schema({ name: String, size: String });
    const Tank = mongoose.model('Tank', schema);
    

    上述代码定义了一个 schema,然后基于这个 schema 生成了一个 model:Tank,Tank 对应 MongoDB 里的一个 collection:tanks(Tank 的小写复数形式)。

    使用 Mongoose

    const mongoose = require('mongoose')
    
    // option 既可以写在第一个参数的 query 里,也可以放在第二个参数
    mongoose.connect('mongodb://username:password@host:port/database?options...', options)
    const db = mongoose.connection
    
    // 对数据库的访问操作写到 callback 里
    db.on('connected', callback)
    

    相关文章

      网友评论

          本文标题:Mongoose 入门笔记

          本文链接:https://www.haomeiwen.com/subject/uysfqhtx.html