• 首页
  • 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 生命周期介绍



回到顶部