mongoose基础操作

Mongoose 是在 node.js 异步环境下对 mongodb 进行便捷操作的对象模型工具。Mongoose是 NodeJS 的驱动,不能作为其他语言的驱动。

操作步骤

1、通过npm命令安装:npm install  mongoose --save

2、引入mongoose并连接数据库(需要在连接地址后制定数据库):

 3、定义Schema

数据库中的 Schema,为数据库对象的集合。schema 是 mongoose 里会用到的一种数据模式,可以理解为表结构的定义;每个 schema 会映射到 mongodb 中的一个 collection,它不具备操作数据库的能力。

 4、创建数据模型

model 是由 schema 生成的模型,可以对数据库的操作。mongoose.model 里面可以传入两个参数也可以传入三个参数:
  • mongoose.model(参数 1:模型名称(首字母大写),参数 2:Schema)
  • mongoose.model(参数 1:模型名称(首字母大写),参数 2:Schema,参数 3:数据库集合名称)
如果传入 2 个参数的话:这个模型会和模型名称相同的复数的数据库建立连接:如通过下面方法创建模型,那么这个模型将会操作 users 这个集合。
如果传入 3 个参数的话:模型默认操作第三个参数定义的集合名称:如通过下面方法创建模型,那么这个模型将会操作students这个集合。

 增删改查

新增数据

在新增数据时,数据结构需要同Schema中的定义保持一致:多余的属性不会被添加;缺失的属性添加成功后,属性缺失;有默认值的熟悉,在添加时可以省略。

  

 

 更新数据

  

 查找数据

 删除数据

 mongoose预定义模式修饰符

mongoose 提供的预定义模式修饰符,可以对我们增加的数据进行一些格式化:
  • lowercase:全部转小写
  • uppercase :全部转大写
  • trim:去除收尾空格
const mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1:27017/goods',{ useNewUrlParser: true },function(err){
    if(err){
        console.log(err);
        return;
    }
    console.log('数据库连接成功')
});
var UserSchema = mongoose.Schema({
    name:{
        type:String,
        trim:true
    },
    age:Number,
    hobbies:{
        type:String,
        lowercase:true,
    },
    nationality:{
        type:String,
        uppercase:true,
    },
    status:{
        type:String,
        default:1   
    }
})
var User = mongoose.model('User',UserSchema);
var u = new User({
    name:' Tom ',
    age:20,
    hobbies:'FootBall',
    nationality:'Spain'
})
u.save(function(err){
    if(err){
        console.log(err);
        return;
    }else{
        User.find({},function(err,data){
            if(err){
                console.log(err);
                return;
            }else{
                console.log(data);
            }
        })
    }
})

Getters 与 Setters 自定义修饰符

除了 mongoose 内置的修饰符以外,我们还可以通过 set(建议使用) 修饰符在增加数据的时候对数据进行格式化。也可以通过 get(不建议使用)在实例获取数据的时候对数据进行格式化。
例如,用户数据中存储当前用户的博客地址,在存储地址前,先判断地址是否是'http://'或者'https://'开头的,不是则添加。

 

 
 
 
 
 
原文地址:https://www.cnblogs.com/yuyujuan/p/13963911.html