简介
Mongoose是一个对象文档模型(ODM)库,它对Node原生的MongoDB模块进行了进一步的优化封装,并提供了更多的功能。核心对象包括Schema、model、document三部分。
优势
- 1)可以为文档创建一个模式结构(Schema)
- 2)可以对模型中的对象/文档进行验证
- 3)数据可以通过类型转换转换为对象模型
- 4)可以使用中间件来应用业务逻辑挂钩
- 5)比Node原生的MongoDB驱动更容易
三部分介绍
Schema方法
定义:模式对象,对集合进行约束
model方法
定义:模型对象,相对于数据库中的集合,通过该对象对集合进行各种操作
document方法
定义:相当于数据库中的文档,可以通过该对象对文档进行各种操作
mongoose创建实例对象,连接数据库实例的demo
一般步骤
- 引入mongoose模块
- 创建schema文档对象
- 创建约束
- 创建集合对象
- 创建文档对象
- 将文档对象保存到数据库中
- 连接数据库
- 监听数据库是否连接成功
- 将创建过程的逻辑放入promise对象中,避免回调地狱
- 如果数据库连接成功,执行.then,失败,执行.catch
代码实现
//1、引入mongoose模块
var mongoose = require("mongoose")
//9、创建promise对象
var promise = new Promise((resolve,reject)=>{
//7、连接数据库
mongoose.connect("mongodb://localhost:27017/mongoose_test1",{useNewUrlParser:true});
//8、设置数据库连接的集合
mongoose.connection.once("open",err=>{
if(!err){
console.log("数据库连接成功")
resolve();
}else{
console.log(err);
reject(err);
}
})
})
//10、调用.then函数
promise
.then(()=>{
// 数据库连接成功
//2、创建schema对象
var Schema = mongoose.Schema;
//3、创建约束
var studentsSchema = new Schema({
name:String,
age:Number,
sex:String,
phone:{
type:String, //字符串型
unique:true, //唯一的
required:true //必须写,不写会报错
},
info:Schema.Types.Mixed, //混合型
hobby:[String], //由于hobby可以有多个,用数组
meta:{
createTime:{
type:Date,
default:Date.now() //默认时间,是现在
},
updateTime:{
type:Date,
default:Date.now()
}
}
})
//4、创建文档对象
var Students = mongoose.model('Students',studentsSchema);
//5、创建集合对象
var studentS = new Students({
name:"许真真1",
age:23,
sex:"女",
phone:"13141666412",
info:"喜欢你",
hobby:["读书","吃饭"]
})
// 6、保存创建的集合对象
studentS.save(err=>{
if(!err){
console.log("数据保存成功")
}else{
console.log(err);
}
})
})
.catch(err=>{
console.log(err);
})