zoukankan      html  css  js  c++  java
  • Mongoose学习笔记

    #名词解释:

      Schema 一种以文件形式存储的数据库模型骨架,不具备对数据库操作的能力

      Model 由Schema生成的模型,具有抽象属性和行为,能够操作数据库

      Entity 由Model创建的实体,可以操作数据库

      Schema 、 Model 、 Entity的关系:Schema生成Model,Model创建Entity;Model和Entity都可以操作数据库,但Model比Entity更具操作性。

    #getting start(起飞)

    下载mongoose包:

       npm install mongoose --save

    然后开始干

      //加载mongoose包

      var mongoose = require('mongoose');

      //连接mongo数据库

      mongoose.collect(url)

      var db = mongoose.connection;

      //监听连接错误

      db.on('error',function(error){

        console.error(error)

      })

    Everything in Mongoose starts with a Schema.

    在mongoose中所有东西都是以Schema开始的。

    那么就开始创建Schema:(Schema

    var mySchema = new mongoose.Schema({

      name:String,

      age:Number,

      cityFrom:{

        type:'String',

        enum:['成都','重庆']

      }

    })

    这里解释一下

      name:String  定义一个属性name,它的类型是String

      age:Number  定义一个属性age,它的类型是Number

      city:{type:'String',enum:['成都','重庆']}  定义一个属性city,它的值又包含两个东西,其中type是它的类型,enum是验证器,表示只接受成都和重庆两个值。

    再解释一下这个验证器(Validation)

      所有的Schema属性都可以有required这个验证器,表明是否非空

      Number类型有min和max验证器,表示最大最小值

      String类型有enum,match,maxlength和minlength验证器,enum表示范围,枚举验证;match表示匹配验证;maxlength表示最大长度验证;minlength表示最小长度验证

      validate 自定义验证规则(略,详见 Custom Validators

    创建完Schema之后,就根据Schema来实例化数据库模型(Model

    var MyModel = mongoose.model('MODEL_NAME',mySchema);

    // MODEL_NAME这里是实例化数据库模型的名字,如果不存在则会创建。

    这里需要注意一个问题,当Model_Name为单数名词的时候,mongoose会自动给你转换成复数形式(来自于:The first argument is the singular name of the collection your model is for. Mongoose automatically looks for the plural version of your model name.),在你的database中你会发现多了一个Model_Name复数形式的collection存在,接下来,你创建的实例化对象就会储存在这个collection中。

    下面开始实例化对象(Entity

      var student = new MyModel({

        name:"薛将军",

        age:24,

        cityFrom:"成都"

      })

    上面实例化对象的属性和值分别对应在创建Schema的时候的属性和属性所对应的类型,那么在实例化的时候如果属性的值不满足验证信息,则会出现验证失败的情况,验证时候会返回一个错误信息。

      以age值错误为例,age的类型是Number,当我们输入为String类型的时候,就会报错,在save的时候捕捉到:

      student.save(function(e){

        console.log(e.errors)  //错误集合(对象)

        console.log(e.errors.age)  //错误的属性(age)

        console.log(e.errors.age.message)  //错误属性的信息,提示错误发生的原因 

        console.log(e.errors.age.path) //错误属性的路径

        console.log(e.errors.kind)  //错误属性的类型  

        console.log(e.errors.value)  //错误属性的值

        ......

      })

    以上为个人mongoose学习的总结,先总结到这里,在实际操作中遇到问题再来补充。

  • 相关阅读:
    .NET破解之百分百营销软件系列
    未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序
    .NET破解之百度网盘批量转存工具
    The system clock has been set back more than 24 hours
    64位系统中读写注册表
    FME2014汉化问题
    FME中Cass扩展属性转Shp的方法
    Hosts文件小结
    浅谈Java中的equals和==
    mysql读写分离
  • 原文地址:https://www.cnblogs.com/xuejiangjun/p/6118689.html
Copyright © 2011-2022 走看看