美文网首页
mongoose 学习笔记

mongoose 学习笔记

作者: 吐了节课蝰蛇 | 来源:发表于2020-04-18 22:15 被阅读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. 总结一下

  • 定义模型
    var xxschema=mongoose.schema({})
  • 静态方法
    xxschema.statics.方法名=function(callback){
    }

    其中4种常用操作
  1. this.model('模型名称').create()
  2. this.model('模型名称').find()
  3. this.model('模型名称').updateMany()
  4. this.model('模型名称').deleteMany()
  • 创造模型
    db.model('模型名称',xxschema)

相关文章

  • Node 第三课

    mongoose 笔记 连接字符串mongoose.connect(DB_URL); 链接成功mongoose.c...

  • mongoose 学习笔记

    一、介绍 1. 概述 mongoose 模块用于简化 node 与数据库 mongodb 之间的操作,目的是通过简...

  • mongoose学习笔记

    首先是基础crud操作 查询简单查询条件查询 插入 更新 查询 简单查询 mongoose: 条件查询 (>) 大...

  • Mongoose学习笔记

    Mongoose介绍 一、mongoose 介绍 Mongoose是在node.js异步环境下对mongodb进行...

  • mongoose学习笔记

    快速上手 前提 安装 MongoDB 和 Node.js 本次学习的 mongoose 版本是 5.4 Mongo...

  • mongoose 学习笔记

    1. 安装mongoose 2.创建mongoose连接 在model文件夹中,创建db.js文件用于创建数据库的...

  • mongoose学习笔记(node)

    Mongoose是在node.js环境下对mongodb进行便捷操作的对象模型工具,因此,要使用mongoose,...

  • Koa mongoose 学习笔记

    中间件 @Koa/cors 前后端分离 所以用了 @koa/cors 来解决跨域 koa-session 用来生成...

  • mongodb高级查询

    主要参考下面两篇文章:Mongoose增查改删学习笔记mongodb官方文档 另外,在学习的过程中遇到的关于数组的...

  • 收藏笔记

    Mongoose增查改删学习笔记 mongodb联查 程序员必须知道的10大基础实用算法及其讲解(Javascri...

网友评论

      本文标题:mongoose 学习笔记

      本文链接:https://www.haomeiwen.com/subject/kpsovhtx.html