mongoose使用教程

这篇教程介绍了如何使用mongoose连接数据库,包括安装mongoose库和封装连接方法。同时,详细讲解了创建约束对象Schema的步骤,如定义各种模式类型、模式选项,如required、default、index等,用于数据验证和操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:mongodb 的服务启动

1. mongoose 连接数据库

npm install mongoose

  • 代码示例:
const mongoose = require('mongoose')

;(function(){
	//链接数据库并使用新的url解析器(useNewUrlParser);
    mongoose.connect('mongodb://localhost:27017/test',{useNewUrlParser:true})
    // 下面代码相当于操作图形界面把一个创建好的数据库(test)打开连接
    mongoose.connection.once('open',(err)=>{ //绑定一个 ‘打开’ 事件
        if(!err){
            console.log('数据库连接成功')
        }else{
           console.log('数据库连接失败'+ err)   
        }
    })
})()
  • 链接数据库是一个异步的方法,最好封装成 Promise 对象暴露出去
const mongoose = require('mongoose')

module.exports = new Promise((resolve,reject)=>{
    mongoose.connect('mongodb://localhost:27017/test',{useNewUrlParser:true})
    
    mongoose.connection.once('open',(err)=>{ 
        if(!err){
            console.log('数据库连接成功')
            resolve()
        }else{
            reject('数据库连接失败'+ err)   
        }
    })
})

2. 创建约束对象 Schema

  • new Schema({ }) //对象里面约束规则

常用允许的模式类型(type):

type类型
String字符串
Number数字
Date时间格式
Buffer二进制缓冲区
Boolean布尔
Mixed混合值
ObjectId对象
Array数组
Decimal小数
Map经纬度格式

Mixed : 混合类型,顾名思义,就是说里面可以放置任意类型的数据

Schema Type模式选项分类:

  • 所有模式类型选项:

required : 布尔或函数,如果真正的添加一个[需要验证器]为这个属性
default : 任何或函数,设置一个默认值的路径。如果该值是一个函数,函数的返回值作为默认值。
select : 布尔,指定默认值[预测]查询
alidate : 添加一个函数[验证器函数]为这个属性
get : 函数,定义了该属性使用一个定制的getter
set : 函数,定义了该属性使用一个定制的setter
alias : 字符串,mongoose> = 4.10.0。定义了一个[virtual]的名字拿到/设置这个path。

  • 索引模式选项:

index : 布尔,是否要定义一个[指数]在这个属性。
unique : 布尔,是否要定义一个[唯一索引]在这个属性。
sparse : 布尔,是否要定义一个[稀疏索引]在这个属性。

  • 字符串模式选项:

lowercase : 布尔,是否总是为这个值调用.toLowerCase()方法
uppercase : 布尔,是否总是为这个值调用.toUpperCase()方法
trim : 布尔,是否总是为这个值调用.trim()方法
match : 创建一个正则表达式[验证器]检查如果匹配给定的正则表达式的值
enum : 创建一个数组[验证器]检查值是否在给定的数组。
minlength : Number类型,创建一个[验证器]检查值长度是不是少于给定的数字
maxlength : Number类型,创建一个[验证器]检查值长度不大于给定的数字

  • 数量模式选项 :

min:Number类型,创建一个[验证器]检查如果该值大于或等于给定的最小值。
max:Number类型,创建一个[验证器]检查值是否小于或等于给定的最大值。

  • 日期模式选项 :

min:Date类型
max:Date类型

Schema 模板初始化示例( 假设创建此文件为 Theaters.js ):
const mongoose = require('mongoose')

const Schema = mongoose.Schema

const TheaterSchema = new Schema({
    title: String,
    rating: Number,
    runtime: String,
    directors: String,
    casts: String,
    image:String,
    genre: [String],
    summary:String,
    posterKey : String,
    createTime : {
        type : Date,
        default:Date.now()
    }
})

//创建模型对象
const Theaters = mongoose.model('Theaters',TheaterSchema)//分别是模型对象名称和约束对象

module.exports = Theaters

Schema 使用模板代码示例:

使用数据库数据,填充数据

const Theaters = require('./Theaters.js')
    
    module.exports = async (data) =>{
        
        for(let i = 0; i<data.length; i++){

        let item = data[i]    

        await Theaters.create({
            title: item.title,
            rating: item.rating,
            runtime: item.runtime,
            directors: item.directors,
            casts: item.casts,
            image:item.image,
            genre: item.genre,
            summary:item.summary,
        })
        console.log('数据保存成功')
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值