- 在mongoose里面有3个核心对象,分别是Schema,Model,Document,这三个对象是有先后顺序的,先有Schema再有Model,然后才有Document。
- Document对象可有可无,Schema和Model才是主要的。
1.首先引入mongoose模块。
import mongoose from 'mongoose';//使用ES6语法引入,替换了require,但需要安装babel转译,而node环境支持require
const { Schema } = mongoose;
2.搭建mongodb环境
mongoose.connect('mongodb://127.0.0.1:27017/mytest', {useNewUrlParser: true, useUnifiedTopology: true});
mongoose.connection.once("open", () => {
console.log(`数据库已连接成功,Server is running at:http://127.0.0.1:27017`)
})
3.Schema(限制模式对象)。
//创建一个Schema对象
const stuSchema = new Schema({
//自定义Schema限制对象
name: String,
age: Number,
//gender: String,//等同于下面这种对象写法,不过下面的这种写法更灵活
gender: {
type: String,
default: "female"//设置默认值
},
address: String
});
小结:创建完Schema对象相当于完成创建了一个数据库。
4.创建Model对象模型。(Model对象相当于数据库中的集合)
- 它依赖Schema来创建Model。
- Model对象代表的是数据库中的(collection),通过Model才能对数据库进行操作。
- 通过mongoose.model(modelName, schema)方法创建一个Model,第一个参数是modelName,代表的是你要和数据库中映射的集合名(默认是复数形式),第二个参数schema代表的是你刚刚创建的schema对象名。
const stuModel = mongoose.model('student', stuSchema);
模型创建完成后,就差最后一个Document对象操作了,我们接下来就需要借助模型来创建文档了。
5.创建Document文档对象。
方法:Model.create(doucment,callback)
回调函数写完后,然后填充我们的文档对象即可。
//向数据库中插入一个文档
stuModel.create({
name: "张三",
age: 20,
gender: "male",
address: "深圳"
},err => {
if (!err) {//如果没有报错,则执行下面的语句
console.log("文档插入成功")
}
})
6.完整代码如下。
//这里就不使用ES6的inport导入语法了,因为我们没有使用脚手架,
//所以需要额外安装babel转译插件,还要配置参数等,太过麻烦。
//我们这里直接使用node提供的require导入模块即可。
const mongoose = require('mongoose')
const Schema = mongoose.Schema
//搭建mongodb环境
mongoose.connect('mongodb://127.0.0.1:27017/mytest', {useNewUrlParser: true, useUnifiedTopology: true});
mongoose.connection.once("open", () => {
console.log(`数据库已连接成功,Server is running at:http://127.0.0.1:27017`)
})
//创建一个Schema对象
const stuSchema = new Schema({
//自定义Schema限制对象
name: String,
age: Number,
//gender: String,//等同于下面这种对象写法,不过下面的这种写法更灵活
gender: {
type: String,
default: "female"//设置默认值
},
address: String
});
//创建Model对象
const stuModel = mongoose.model('students', stuSchema);
//向数据库中插入一个文档
stuModel.create({
name: "张三",
age: 20,
gender: "male",
address: "深圳"
},err => {
if (!err) {//如果没有报错,则执行下面的语句
console.log("文档插入成功")
}
})
通过node环境运行代码。
我们可以通过打开任何一款数据库可视化工具,来查看我们当前插入的文档到底有没有显示在数据库的集合当中。
我们可以看下下面这幅图,用来来帮助我们理清上述代码Schema,Model,Document三者在数据库当中充当的角色和一一对应关系。
网友评论