属性的定义

创建一个模型类,我们需要定义以下几个主要的属性:

// 模型名称
this.modelName = 'user';
// 主键
this.pk = 'id';
// 数据表名 可不用设置,默认为表前缀+模型名(小写,单词以下划线分隔)
this.tableName = 'think_user';
// 数据表字段信息
this.fields = {};
// 数据验证
this.validations = {};
// 关联关系(仅继承relModel有效)
this.relations = {};

modelName

定义模型名称,在关联模型描述中使用。

tableName

定义数据库表名称。如果未设置(属性不存在),默认值为 表前缀+模型名(小写,单词以下划线分隔):

user => think_user

user_profile => think_user_profile

UserGroup => think_user_group

fields:

定义数据字段,格式为:


title: {
    type: 'string',
    index: true,
    size: 100,
    required: true,
    unique: true,
    pk: true,
    auto: true,
    comment: '字段说明'
}

属性 描述 描述
type 数据字段类型 见下表
size 数据字段长度 值为整数
defaults 数据字段默认值 根据字段类型取值,json默认值为{}或[],array默认值为[]
required 数据字段是否允许空值,true不允许。如果该字段设置索引index=true,则默认不允许空值 true或false
unique 数据字段值唯一 true或false
index 是否索引 true或false
pk 是否主键 true或false
auto 是否自增属性。注意设置为true的时候,该字段自动变更为主键,跟多字段联合主键冲突。 true或false
comment 字段说明
字段数据类型 描述
string 字符型
text 文本型
integer 整型
float 浮点型
json json格式
array 数组格式

validations:

validations属性定义了模型类的验证规则。如果验证返回错误,会中断新增及更新操作。定义格式:


this.validations = {
    type: {
        method: 'ADD', //仅在新增时验证
        valid: ['required'],
        msg: {
            required: '活动类别必填'
        }

    },
    phonenum: {
        method: 'UPDATE',//仅在更新时验证
        valid: ['required','mobile'],
        msg: {
            required: '手机号必填',
            mobile: '请输入正确的手机号'
        }
    }
}

属性 描述
method 触发验证的操作。ALL新增和更新均验证,ADD新增时验证,UPDATE更新时验证。
valid 验证规则,多个验证规则使用数组
msg 当某个规则未通过时返回的错误提示。msg对象的key和规则名对应

使用方法:


userModel.add(data);//自动验证规则定义的type字段,phonenum新增不会验证

userModel.where({id: 1}).update(data);//data如果包含phonenum则验证

valid定义规则,支持多个规则匹配,msg则定义了不满足规则时的错误提示。

详细说明见数据验证

relations

定义了模型关联关系,仅当模型继承了relModel类才生效。详细用法请参照文档:关联模型