Node 中 使用 Mongoose 操作 MongoDB 数据库
1. 引入依赖
const mongoose = require('mongoose');
2. 连接数据库
mongoose.connect('mongodb://localhost/test',{useNewUrlParser:true});
mongoose.set('useFindAndModify',false);
加上mongoose.set('useFindAndModify',false);
不然后面的 findByIdAndUpdate 会给报错,问的话 可以看这里
3. 获取连接状态
mongoose中基本上所有的异步操作都支持Promise
所以可以不使用回调函数的形式
let conn = mongoose.connection;
conn.on('error',(error) => {
//如果连接出现错误,可能需要将连接数据库操作中的 localhost 改成 127.0.0.1
console.log(error);
}).once('open',() => {
console.log('MongoDB Connected...');
//这里做连接成功后的事情
})
4. 创建文档结构(Schema)
在连接数据库成功后,我们就可以创建文档结构了,这一步类似于关系数据库中定义表结构,就是设计表
let userSchema = new Schema({
username:{
type:String,
required:true
},
password:{
type:String,
required:true
},
email:{
type:String,
validate:{
validator:(value) => {
return /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(email);
},
message:"邮箱格式有误"
}
}
})
上面通过new
来创建一个 Schema
实例,数据各字段的约束通过一个对象传入,这种方式类似于 vue 中子组件从父组件获得数据时的操作。
关于各数据字段的中约束选项 可以看这里 约束选项
5. 将定义好的文档结构发布为模型,得到模型构造函数
let User = mongoose.model('User',userSchema);
mongoose.model()
的第一个参数是一个首字母大写的单数形式的单词,mongoose会将这个参数小写复数化作为 集合(表) 的名称 ( users ) ,第二个参数就是上面刚刚创建的 文档模式
6. 使用模板构造函数创建数据模型并保存
let user = new User({
userName:'Mockingjay',
password:'wow',
email:'balbala@example.com'
});
//将数据保存到数据库中
user.save((err,data)=>{//err:保存出错,data:保存的数据})
7. 通过模型构造函数来对数据进行删改查的操作
//查询构造函数所对应的表的所有数据
User.find((err,data)=>{});
//更新数据
User.findByIdAndUpdate(condition,updateData,(err,data)=>{//err:操作错误信息,data:更新的数据});
//删除数据
User.findByIdAndDelete(id,(err,data)=>{});
其实每一种操作都还对应着许多API 戳这里了解更多