mongoose 学习笔记

2020-04-18  本文已影响0人  吐了节课蝰蛇

1. 安装mongoose

npm install mongoose --save

2.创建mongoose连接

在model文件夹中,创建db.js文件用于创建数据库的连接对象,然后将创建好的连接对象曝露出去。

// 引包
const mongoose = require("mongoose");
//连接数据库
// mongoose.connect("mongodb://localhost/mongooseDB");
var db=mongoose.createConnection("mongodb://localhost/mongooseDB");
db.once('open',function(callback){
    console.log('数据库连接ok...');    
})
//将创建连接的对象曝露出去
module.exports=db;

3. mongoose操作对象

Mongoose 里,一切都始于Schema,它可以看做是一种架构,每一个创建的架构(Schema)都会映射到MongoDB中collection,并且创建与Schema相同的结构的文档(数据)。
我们继续在model文件夹中创建一个student.js文件,用于搭建学生的架构(Schema),创建完成后我们使用db.model将这个架构映射成一个学生模型,最后将这个模型也导出。

//引包
var mongoose=require('mongoose');
var db=require('./db')

//创建一个学生架构
var studentSchema = mongoose.Schema({
    name: {
        type: String,
        default: '匿名用户'
    },
    age: {
        type: Number
    },
    sex: {
        type: Boolean
    }
})

//将学生架构映射成一个学生(Student)模型
var studentModel=db.model('Student',studentSchema);

//将学生模型曝露出去
module.exports=studentModel;

4. 创建实例并保存

创建一个app.js当做程序的入口文件,这里引用刚才导出的学生文件,获得一个学生的模型,然后创建这个模型对象,相当于实例化一个学生对象。

var student = require('./model/student')

//创建对象
var admin= new student({
    name: 'admin',
    age: 33,
    sex: true
});
//保存
admin.save(function () {
    console.log('ok');
})

//创建并保存另一个对象
student.create({
    name: 'test',
    age: 18,
    sex: false
})

运行测试

npm app.js

查看数据库中获得两条数据

5. 添加几个静态方法

修改student.js文件,在其中添加几个静态方法,这相当于是直接在student架构(类型)中直接添加方法,使用时不需要实例化对象,直接通过student来调用。

//引包
var mongoose = require('mongoose');
var db = require('./db')

//创建一个学生架构
var studentSchema = mongoose.Schema({
    name: {
        type: String,
        default: '匿名用户'
    },
    age: {
        type: Number
    },
    sex: {
        type: Boolean
    }
})

//静态方法是直接将方法创建到架构中去,直接通过架构打点调用

//添加
studentSchema.statics.addStudent=function(name,age,sex,callback){
    this.model('Student').create({name:name,age:age,sex:sex},callback);
}

//创建一个查找功能
studentSchema.statics.findByName = function (name, callback) {
    this.model('Student').find({
        name: name
    }, callback);
};

//更新
studentSchema.statics.updateInfoByQuery = function (query, data, callback) {
    this.model('Student').updateMany(query, data, callback);
}

//删除
studentSchema.statics.deleteByName = function (name, callback) {
    this.model('Student').deleteMany({
        name: name
    }, callback);
}

//将学生架构映射成一个学生(Student)模型
var studentModel = db.model('Student', studentSchema);

//将学生模型曝露出去
module.exports = studentModel;

使用它们,各种测试CRUD

var student = require('./model/student')

// //创建对象
// var admin= new student({
//     name: 'admin',
//     age: 33,
//     sex: true
// });
// //保存
// admin.save(function () {
//     console.log('ok');
// })

// //创建并保存另一个对象
// student.create({
//     name: 'test',
//     age: 18,
//     sex: false
// })

// //通过姓名查找
// student.findByName('admin', function (err, result) {
//     if (err)
//         console.log(err);
//     else
//         console.log(result);
// })

// //更新
// student.updateInfoByQuery({
//     name: 'admin'
// }, {
//     $set: {
//         age: 19
//     }
// }, function (err, result) {
//     if (err)
//         console.log(err);
//     else
//         console.log(result);
// })

// //删除
// student.deleteByName('admin',function(err,result){
//     if (err)
//         console.log(err);
//     else
//         console.log(result);    
// })

// //添加
// student.addStudent('cc',66,true,function(err,result){
//      if (err)
//         console.log(err);
//     else
//         console.log(result);    
// })

6. 总结一下

  1. this.model('模型名称').create()
  2. this.model('模型名称').find()
  3. this.model('模型名称').updateMany()
  4. this.model('模型名称').deleteMany()
上一篇下一篇

猜你喜欢

热点阅读