属性的定义

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

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

modelName

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

tableName

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

  1. user => think_user
  2. user_profile => think_user_profile
  3. UserGroup => think_user_group

fields:

定义数据字段,格式为:

  1. title: {
  2. type: 'string',
  3. index: true,
  4. size: 100,
  5. required: true,
  6. unique: true,
  7. pk: true,
  8. auto: true,
  9. comment: '字段说明'
  10. }
属性描述描述
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浮点型
jsonjson格式
array数组格式

validations:

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

  1. this.validations = {
  2. type: {
  3. method: 'ADD', //仅在新增时验证
  4. valid: ['required'],
  5. msg: {
  6. required: '活动类别必填'
  7. }
  8. },
  9. phonenum: {
  10. method: 'UPDATE',//仅在更新时验证
  11. valid: ['required','mobile'],
  12. msg: {
  13. required: '手机号必填',
  14. mobile: '请输入正确的手机号'
  15. }
  16. }
  17. }
属性描述
method触发验证的操作。ALL新增和更新均验证,ADD新增时验证,UPDATE更新时验证。
valid验证规则,多个验证规则使用数组
msg当某个规则未通过时返回的错误提示。msg对象的key和规则名对应

使用方法:

  1. userModel.add(data);//自动验证规则定义的type字段,phonenum新增不会验证
  2. userModel.where({id: 1}).update(data);//data如果包含phonenum则验证

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

详细说明见数据验证

relations

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