mongoose详细案例

2018-12-24  本文已影响0人  pretty_rain

mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具。本文将详细介绍如何使用Mongoose来操作MongoDB

案例要求:

案例包含三个文件:

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);
})
上一篇 下一篇

猜你喜欢

热点阅读