mongoose操作数据库
mongoose
-
Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,Mongoose将数据库 中的数据转换为JavaScript对象以供你在应用中使用。
-
mongodb这个数据的操作肯定不止一种形式,mongoose只是其中一种
mongoose操作流程
- 安装mongoose
$ cnpm i mongoose -D
- 连接数据库
var mongoose = require( 'mongoose )
//mongoose.connect(连接地址/数据库名称)
mongoose.connect( 'mongodb://127.0.0.1:27017/students' )
-
Schema定义
-
它可以理解为数据库模型骨架,可以看作工厂中模具一样,好比一个茶杯,喝水是茶杯最终的功能,茶杯本身就像是Model,那么茶杯的批量生产是需要靠工厂的模具成型的。Schema不仅定义了文档结构和使用性能,还可以有扩展插件、实例方法、静态方法、复合索引、文档生命周期钩子。
-
Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力
-
Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对
-
Entity(实体) : 由Model创建的实体,他的操作也会影响数据库
-
存储数据步骤:定义Schema (骨架) > 创建model(模型)> Entity实例化方法。
// 1. 定义Schema // var studentsSchema = new mongoose.Schema( options ) //options是用来定义存储数据的数据类型 var studentsSchema = new mongoose.Schema( { // 数据: 数据类型 id: Number, name: String, age: Number }) // 2. 定义模型 // var studentsModel = mongoose.model( 集合名称,骨架 ) var studentsModel = mongoose.model( 'students', studentsSchema ) // 3. 定义实体 var students = new studentsModel()
-
-
增删改查
- 增加:
//通过模式studentSchema 创建一个模型studentModel var studentModel = mongoose.model("students",studentSchema ); var instance1 = new studentModel (); instance1.name="tangyan"; instance1.age="18"; //通过save方法保存 instance1.save(function(err){ if (err) { console.log('保存失败'); return; } });
- 查询:
通过find进行查找,第一个参数 {} 为空表示查询所有的数据
studentModel.find( {}, (error , result)=>{ if( error ) throw error console.log(result)// reuslt 查询结果 //console.log( result[0]._id ) //查出 _id 也可通过遍历取得id })
-
删除:
- 删除数据首先要知道删除哪一条信息,需要知道信息的id.
- 把对应id的数据查询出来,可以通过findById找到这条id的数据,然后执行remove方法
studentModel.find( {}, (error , result)=>{ if( error ) throw error var id = ( result[0]._id ) //查询找到 _id studentModel.findById( id,( error,data ) => { if( error ) throw error //删除 data.remove( () => { console.log('删除成功') }) }) })
-
修改:
- 修改数据的思路:先把对应id的数据查询出来。
- 对需要修改的字段重新赋值,然后执行save方法保存。
studentModel.find( {}, ( error , result) => { if(error) throw error const id = result[0]._id //取到第一项的id studentModel.findById( id , ( error , data) => { if( error ) throw error data.age = 22 //赋值改变 data.save() //保存 }) })