提示: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('数据保存成功')
}
}