Waterline Models 字段定义类型设置

sails.png


文章目录



Waterline Models 字段定义类型设置

waterline 中涉及到的字段类型如下:

  • string
  • text
  • integer
  • float
  • date
  • time
  • datetime
  • boolean
  • binary
  • array
  • json

模型属性

module.exports = {
  identity: 'Article_content',
  autoCreatedAt:false,
  autoUpdatedAt:false,
  tableName:'Article_Content',
  autoPK:false, 

  attributes: {
     
  }
}

identity: 模型名,默认对应表名,当没有 tableName 属性时,此模型名对应表名称.
tableName:表名, 此属性来指定对应的表名
autoCreatedAt:false 此字段为 true 时,数据表中会多一列用来记录数据插入时间, 字段名 createdAt ,如果为 false ,表中不会有此记录时间字段.
autoUpdatedAt:false 此字段为 true 时,数据表中会多一列用来记录数据更新时间, 字段名 updatedAt ,如果为 false,表中不会有此更新时间字段.
autoPK:false 此字段为 true 时,数据表会自动生成 id 唯一标识字段,当此字段为 true 时,可以在 attributes 中使用 primaryKey 字段来指定某一个字段是唯一标识
attributes 此对象定义表字段属性


字段属性


默认值 defaultsTo

设置初始化默认值

module.exports = {
  attributes: {
    password:{
        type:'string',
        defaultsTo:'123456'
  }
}

上面 password 默认初始值设置为 123456 ,也可以指定一个方法来生成一个默认值

module.exports = {
  attributes: {
    password:{
        type:'string',
        defaultsTo:function() {
            return uuid.v4();
    }
  }
}

默认值指定一个方法,自动生成一个 uuid 来当初始默认值


必填项 required

某字段为必填项

module.exports = {
  attributes: {
    password:{
        type:'string',
        defaultsTo:'123456',
        required:true
  }
}

required 为 true 时, 此字段为必填项.


自增 autoIncrement

但字段是某正整数,需要递增时会用到此属性:

module.exports = {
  attributes: {
    userid:{
        type:'integer',
        autoIncrement: true
  }
}

唯一字段 unique

在数据表中,如果某个字段需要唯一标识,那就用到了 unique

module.exports = {
  attributes: {
    uuid:{
        type:'string',
        unique:true
  }
}

字段要设置 索引 时 index

假设用户名是我们常常用来检索用户的字段,我们需要为此字段添加索引

module.exports = {
  attributes: {
    username:{
        type:'string',
        index:true
  }
}

主键标识 primaryKey

每个模型只有一个主键, 尽量在 autoPK 属性设置为 false 时 才使用 primaryKey

module.exports = {
  autoPK:false,
  attributes: {
    uuid:{
        type:'string',
        primaryKey:true
  }
}

当module 定义 autoPK 为 false 时, attributes 属性中的 primaryKey = true 才能生效.


字段值指定从某个枚举中选择 enum

attributes: {
  color: {
    type: 'string',
    enum: ['red', 'green', 'black']
  }
}

比如上面定义了一个 color 属性,字段类型是字符串,字段值必须从 枚举数据 ['red', 'green', 'black'] 中选择其中一个


字段长度指定 size

attributes: {
  uuid: {
    type: 'string',
    size: 32
  }
}

定义字段 uuid ,类型为字符串,字段长度为 32 位


模型属性名和数据表中字段名不一致 columnName

attributes: {
  uuid: {
    type: 'string',
    size: 32,
    columnName: 'id'
  }
}

如果没有 columnName 字段时, 模型属性 uuid 对应在表结构中的字段名也是 uuid .
当 有了 columnName 属性时, 数据表中的字段名就是 columnName 指定的名称,可以和 model 中的属性名不一致,互不影响.

出自:Waterline Models 字段定义类型设置

回到顶部