mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具。本文将详细介绍如何使用Mongoose来操作MongoDB
案例要求:
- 首先要掌握nodejs 、mongodb
- 安装mongodb数据库
- 安装nodejs环境
- npm install mongoose 下载mongoose包
案例包含三个文件:
- db.js --创建数据库连接
- Student.js -- 类骨架模型
- app.js -- 调用模型
db.js
/**
* Created by prettyRain on 2018/12/24.
* 连接数据库
*/
//引入包
var mongoose = require('mongoose');
//创建数据库连接
var db = mongoose.createConnection('mongodb://127.0.0.1:27017/haha');
db.on('error',console.error.bind(console,'error'));
db.once('open',function(callback){
console.log("数据库连接成功");
});
module.exports = db;
Student.js
/**
* Created by prettyRain on 2018/12/24.
* student骨架
* model : 由Schema构造生成的模型,除了Schema定义的数据库骨架以外,
* 还具有数据库操作的行为,类似于管理数据库属性、行为的类
*/
var mongoose = require('mongoose');
var db = require('./db.js');
/**
* schema :一种以文件形式存储的数据库模型骨架,无法直接通往数据库端,也就
* 是说它不具备对数据库的操作能力.可以说是数据属性模型(传统意义的
* 表结构),又或着是“集合”的模型骨架
*/
var Schema = mongoose.Schema;
var studentSchema = new Schema({
name : {type:String},
age : {type:Number},
sex : {type:String}
})
/**
* 自定义类方法
*/
//插入数据
studentSchema.statics.add = function(paramJSON,callback){
this.model('Student').create(paramJSON,function(err,result){callback(err,result)});//类方法
}
//查询数据
studentSchema.statics.queryStudent = function(paramJSON,callback){
console.log(this.model);
//this.model('Student'):Student 模型
this.model('Student').find(paramJSON,callback);//类方法
}
//修改数据
studentSchema.statics.updateStudentMany = function(whereStr,updateStr,options,callback){
this.model('Student').updateMany(whereStr,updateStr,options,callback);//类方法
}
/**
* 自定义实例方法
*/
//插入数据
studentSchema.methods.add = function(callback){
//this:student实例对象
this.save(callback);//实例方法
}
//查询数据
studentSchema.methods.queryStudent = function(callback){
console.log(this.model);
//this.model('Student'):Student 模型
this.model('Student').find({name:this.name},callback);//类方法
}
var student = db.model('Student',studentSchema);
module.exports = student;
app.js
/**
* Created by prettyRain on 2018/12/24.
*/
var Student = require('./models/Student.js');
//实例化类
/*var tom = new Student({"name":"tom",age:12,sex:"男"});
tom.save(function(err){
console.log('保存成功');
})*/
//
/*Student.create({"name":"anli",age:13,sex:"女"},function(err){
console.log("保存成功");
})*/
/*Student.add({"name":"jkon","age":15,sex:"男"},function(err,result){
console.log(result);
})*/
/*var tom = new Student({"name":"tom",age:12,sex:"男"});
tom.add(function(err){
console.log('保存成功');
})*/
Student.queryStudent({name:"tom"},function(err,result){
console.log(result);
})
var tom = new Student({name:"tom"});
tom.queryStudent(function(err,result){
console.log(result);
})
Student.updateStudentMany({name:"tom"},{$set:{age:15}},{},function(err,result){
console.log(result);
})
网友评论