在Sails模型中调用beforeUpdate方法时?

时间:2015-02-22 19:42:34

标签: sails.js waterline

我去sailscast 我在用户模型中创建

module.exports = {

    attributes: {

        login: {
            type: 'string',
        },

        password: {
            type: 'string',
        },

        birthDate: {
            type: 'date',
        }
    },

    beforeCreate: function(values, next) {
        //someCode();
    },

    beforeUpdate: function(values, next) {
        console.log("i\'m here!");
        if (values.birthDate && _.isNaN(Date.parse(values.birthDate))) {
            console.log(values.birdDate);
            return next({err: ["Wrong date!"]});    
        }

        values.birthDate = Date.parse(values.birthDate);
        next();
    }
};

我希望在beforeUpdate方法中更改日期值的字符串值,但不调用此方法。 我可以用手工打电话吗?

1 个答案:

答案 0 :(得分:0)

您的beforeUpdate方法永远不会执行,因为您有验证错误。

birthDate应该是日期,但是sails会获得字符串并停止更新过程。

因此,您应该在模型的记录验证之前将其转换为日期(并且在更新之前尝试进行);

只需将beforeUpdate方法重命名为beforeValidate即可。这可能会有所帮助。

您可以找到sails执行模型生命周期方法here的顺序。