Waterline Models 字段定义类型设置
文章目录
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 中的属性名不一致,互不影响.