/* jshint indent: 2 */
let MD5 = require('crypto').createHash('md5');
module.exports = function (sequelize, DataTypes) {
return sequelize.define('Account', {
id: {
type: DataTypes.INTEGER(11),
allowNull: false,
primaryKey: true,
autoIncrement: true
},
name: {
type: DataTypes.STRING(255),
allowNull: true,
// 从数据库查询到数据,经过以下处理后给用户
get() {
return "dear " + this.getDataValue('name');
}
},
age: {
type: DataTypes.INTEGER(11),
allowNull: true,
// 数据校验返回异常 customFunc自定义的校验
validate: {
max: {
args: 100,
msg: "age is larger"
},
min: {
args: 1,
msg: 'age is small'
},
customFunc(val) {
if (val === 50) {
console.log('dddd');
throw new Error('Only even values are allowed!')
}
}
}
},
passwd: {
type: DataTypes.STRING(255),
allowNull: true,
// 当插入或者修改时,经过以下处理后再写入数据库
set(val) {
val = MD5.update(val).digest('hex');
this.setDataValue("passwd", val);
}
}
}, {
tableName: 'account',
// setterMethods,getterMethods这个是相当与在存取时都添加了changeName这个虚拟字段
setterMethods: {
changeName(val) {
return this.setDataValue('name', val.slice(0, -1));
}
},
getterMethods: {
changeName() {
return this.name + 'changeName';
}
}
});
};