Lifecycle
Sails Model的生命周期主要是值对于记录操作的生命周期:
create->update->destroy
Lifecycle callbacks指的是在上述生命周期到达或完成时的hook方法,包括以下内容:
Callbacks on
create
- beforeCreate: fn(recordToCreate, proceed)
- afterCreate: fn(newlyCreatedRecord, proceed)
Callbacks on
update
- beforeUpdate: fn(valuesToSet, proceed)
- afterUpdate: fn(updatedRecord, proceed)
Callbacks on
destroy
- beforeDestroy: fn(criteria, proceed)
- afterDestroy: fn(destroyedRecord, proceed)
该部分内容非常好理解,主要可以用于默认值生成、密码加盐、额外的关联计算操作等,举例如下:
npm install node-uuid --save
npm install crypto --save
User Model:
const crypto = require('crypto');
const uuid = require('node-uuid');
module.exports = {
primaryKey: 'uuid',
attributes: {
uuid: {
type: 'string',
required: true,
},
username: {
type: 'string',
required: true,
allowNull: false,
unique: true,
},
password: {
type: 'string',
required: true,
allowNull: false,
},
},
beforeCreate: function (valuesToSet, proceed) {
let md5 = crypto.createHash('md5');
valuesToSet.uuid = uuid.v4();
valuesToSet.password = md5.update(valuesToSet.password).digest('hex');
return proceed();
}
};
上面代码实现在创建前给uuid赋默认值和计算密码md5值进行保存。
数据库的表结构如下:
通过以下url创建一个新的用户记录:
http://127.0.0.1:1337/user/create?username=admin&password=123456&uuid=auto
查看结果如下: