[TOC]
### 數據庫字段約束
模型驗證允許你為模型的每個屬性指定格式/內容/繼承驗證.
驗證會自動運行在`create`,`update`和`save`上. 你也可以調用`validate()`手動驗證一個實例.
~~~
class ValidateMe extends Model {}
ValidateMe.init({
bar: {
type: Sequelize.STRING,
validate: {
is: ["^[a-z]+$",'i'], // 只允許字母
is: /^[a-z]+$/i, // 與上一個示例相同,使用了真正的正則表達式
not: ["[a-z]",'i'], // 不允許字母
isEmail: true, // 檢查郵件格式 (foo@bar.com)
isUrl: true, // 檢查連接格式 (http://foo.com)
isIP: true, // 檢查 IPv4 (129.89.23.1) 或 IPv6 格式
isIPv4: true, // 檢查 IPv4 (129.89.23.1) 格式
isIPv6: true, // 檢查 IPv6 格式
isAlpha: true, // 只允許字母
isAlphanumeric: true, // 只允許使用字母數字
isNumeric: true, // 只允許數字
isInt: true, // 檢查是否為有效整數
isFloat: true, // 檢查是否為有效浮點數
isDecimal: true, // 檢查是否為任意數字
isLowercase: true, // 檢查是否為小寫
isUppercase: true, // 檢查是否為大寫
notNull: true, // 不允許為空
isNull: true, // 只允許為空
notEmpty: true, // 不允許空字符串
equals: 'specific value', // 只允許一個特定值
contains: 'foo', // 檢查是否包含特定的子字符串
notIn: [['foo', 'bar']], // 檢查是否值不是其中之一
isIn: [['foo', 'bar']], // 檢查是否值是其中之一
notContains: 'bar', // 不允許包含特定的子字符串
len: [2,10], // 只允許長度在2到10之間的值
isUUID: 4, // 只允許uuids
isDate: true, // 只允許日期字符串
isAfter: "2011-11-05", // 只允許在特定日期之后的日期字符串
isBefore: "2011-11-05", // 只允許在特定日期之前的日期字符串
max: 23, // 只允許值 <= 23
min: 23, // 只允許值 >= 23
isCreditCard: true, // 檢查有效的信用卡號碼
// 自定義驗證器的示例:
isEven(value) {
if (parseInt(value) % 2 !== 0) {
throw new Error('Only even values are allowed!');
}
}
isGreaterThanOtherField(value) {
if (parseInt(value) <= parseInt(this.otherField)) {
throw new Error('Bar must be greater than otherField.');
}
}
}
}
}, { sequelize });
~~~
~~~
const Student = app.model.define('student',{
id: { type: INTEGER, primaryKey: true, autoIncrement: true },
name: { type: STRING, allowNull: false },
age: {
type: INTEGER,
allowNull: false,
validate: {
isEmail: {
args: true,
msg: '不是郵箱類型'
}
}
},
~~~
- 概述
- 起步
- 跨域配置
- 路徑別名
- 路由
- api版本控制
- 錯誤和異常
- 全局異常處理
- 數據庫
- 創建遷移文件
- sequelize數據類型
- 配置
- 新增
- 查詢
- 條件查詢
- 模糊查詢
- 排序查詢
- 聚合查詢
- 分組查詢
- 分頁查詢
- 修改
- 刪除
- 獲取器
- 修改器
- 靜態屬性
- 字段驗證
- 外鍵約束
- 關聯模型
- 一對一
- 一對多
- 左外連接
- 多對多
- 字段顯示隱藏
- 事務
- 字段自增
- 驗證層
- egg-validate
- indicative驗證器
- egg-validate-plus
- betterValidate
- 校驗規則
- 中間件
- 安全
- 數據加密
- 單向加密
- 示例代碼
- 封裝egg加密
- 上傳
- path模塊
- 單文件上傳
- 多文件上傳
- 按照日期存儲
- 工具函數
- egg常用工具函數
- 緩存
- 配置緩存插件
- 設置緩存
- 獲取緩存
- 刪除緩存
- 消息隊列
- rabbitMQ
- 安裝
- 簡單隊列
- 工作隊列
- 工作隊列(dispach分發)
- 消息應答和持久化
- redis
- 數據類型
- 字符串類型(String)
- 哈希類型(Hash)
- 列表(List)
- 無序集合(Set)
- 可排序集合(Zset)
- 郵件系統
- nodeMailer
- 第三方模塊
- 生成隨機數
- JWT
- JWT鑒權
- 生成Token
- 短信服務
- 阿里大魚短信驗證碼
- 發送短信邏輯
- 阿里短信Node類