• 首页
  • nodejs
  • node.js 下 sails orm框架 WaterLine 生命周期介绍

node.js 下 sails orm框架 WaterLine 生命周期介绍

sails.png


文章目录


上一篇是关于 sails 定义模型models 属性字段定义类型
这一篇和大家分享关于 sails 的 orm框架 WaterLine 在与数据库操作过程中的生命周期控制.


生命周期

WaterLine 在执行过程中的生命周期可以简单的理解为:
调用前干什么
调用中.....
调用后干什么

具体有哪些操作会执行上面的生命周期


创建 create

创建记录时生命周期依次执行下面几个步骤:
验证模型数据之前..
验证模型数据之后..
创建记录之前..
创建记录之后..

beforeValidate: fn(values, callback)
afterValidate: fn(values, callback)
beforeCreate: fn(values, callback)
afterCreate: fn(newlyInsertedRecord, callback)

在回调函数 callback 中用代码来实现某一个生命周期中的业务逻辑.


更新 update

更新记录时和上面的生命周期有类似的步骤:
验证模型数据之前..
验证模型数据之后..
更新模型之前..
更新模型之后..

beforeValidate: fn(values, callback)
afterValidate: fn(values, callback)
beforeUpdate: fn(values, callback)
afterUpdate: fn(values, callback)

同样在回调函数 callback 中用代码来实现生命周期中的业务逻辑


销毁 destroy

销毁记录时的生命周期和上面有所不同:
销毁之前..
销毁之后..

销毁过程的生命周期一共有2个步骤

beforeDestroy: fn(criteria, callback)
afterDestroy: fn(destroyedRecords, callback)

同样在回调函数中拦截某个生命周期,用代码实现业务逻辑


示例

创建一个用户模型有2个字段 ,分别是 username 和 password
我们在创建模型的生命周期 beforeCreate 函数做一些事情:
创建前我们针对模型中的pssword 字段进行 hash 算法加密,然后写入到数据库中.


var bcrypt = require('bcrypt');

module.exports = {
    attributes: {
        username: {
            type: 'string',
            required: true
        },
        password: {
            type: 'string',
            required: true
        }
    },
    beforeCreate: function (values, callback) {
        bcrypt.hash(values.password, 10, function(err, hash) {
            if(err) return cb(err);
            values.password = hash;
            callback();
        });
    }
};

出自:node.js 下 sails orm框架 WaterLine 生命周期介绍

回到顶部