zoukankan      html  css  js  c++  java
  • mongoose

    nodejs操作mongodb

    教程:http://ourjs.com/detail/53ad24edb984bb4659000013

    SchemaModelEntity的关系请牢记,Schema生成ModelModel创造EntityModelEntity都可对数据库操作造成影响,但ModelEntity更具操作性。

    我是在http://www.cnblogs.com/wang-jing/p/4138654.html(node.js+express+mongodb)的基础上练习的

    1、可以由model生成entity

    var personE = new Demo({title:'blog'});
    console.log(personE.title);
    

    2、可以在schema中定义方法,在entity中使用:为model和entity提供公共方法

    demoSchema.methods.speak = function(){
    	console.log('my name is:'+this.title);
    }
    personE.speak();
    

      

    schema:是数据库模型在程序中的表现;schema.type是mongoose的数据类型

    Schema.Types.Mixed是Mongoose定义个混合类型,碰到了再说

    Schema.Types.ObjectId主键

    虚拟属性/虚拟域 碰到了再说

    配置项:safe,strict,sharedKey(分布式),capped(上线操作),versionKey(版本锁),autoIndex(自动索引)

    var ExampleSchema = new Schema(config,options);
    或
    var ExampleSchema = new Schema(config);
    ExampleSchema.set(option,value);
    

      

    Documents:相当于entity

    更新

    PersonModel.findById(id,function(err,person){
          person.name = 'MDragon';   //entity
          person.save(function(err){});
        });
    

    新增:

    entity.save();  model.create();

    删除:

    entity.remove();  model.remove();

    子文档 碰到了再说

    查询

    Person
          .find({ occupation: /host/ })
          .where('name.last').equals('Ghost')
          .where('age').gt(17).lt(66)
          .where('likes').in(['vaporizing', 'talking'])
          .limit(10)
          .sort('-occupation')
          .select('name occupation')
          .exec(callback);

    model.find();   model.count()

    /* ----------验证-------------- */

    验证始终定义在SchemaType中
    验证是一个内部中间件
    验证是在一个Document被保存时默认启用的,除非你关闭验证
    验证是异步递归的,如果你的SubDoc验证失败,Document也将无法保存
    验证并不关心错误类型,而通过ValidationError这个对象可以访问
    

    required 非空验证
    min/max 范围验证(边值验证)
    enum/match 枚举验证/匹配验证
    validate 自定义验证规则

    var PersonSchema = new Schema({
          name:{
            type:'String',
            required:true //姓名非空
          },
          age:{
            type:'Nunmer',
            min:18,       //年龄最小18
            max:120     //年龄最大120
          },
          city:{
            type:'String',
            enum:['北京','上海']  //只能是北京、上海人
          },
          other:{
            type:'String',
            validate:[validator,err]  //validator是一个验证函数,err是验证失败的错误信息
          }
        });
    
    err.errors                //错误集合(对象)
        err.errors.color          //错误属性(Schema的color属性)
        err.errors.color.message  //错误属性信息
        err.errors.path             //错误属性路径
        err.errors.type             //错误类型
        err.name                //错误名称
        err.message                 //错误消息
    

      

      

      

      

  • 相关阅读:
    hdu 2199 Can you solve this equation? 二分
    STL 学习代码~
    hdu 1551 Cable master 二分
    fzu 1564 Combination 组合数是否包含因数
    fafu 1079 帮冬儿忙 组合数包含因数个数
    soj 3290 Distribute The Apples I 组合数对素数取余
    fzu 2020 组合 组合数对素数取余
    hdu 1969 Pie 二分
    hdu 2141 Can you find it? 二分
    hdu 2899 Strange fuction 二分
  • 原文地址:https://www.cnblogs.com/wang-jing/p/4861244.html
Copyright © 2011-2022 走看看