定义Sequelize模型,例如所有插入的条目应为小写

时间:2017-11-08 06:46:50

标签: mysql node.js sequelize.js

我需要使用sequelize和NodeJS在小写字母中插入first_namelast_name。 如何定义一个所有条目都应为小写的模型?

const Users = sequelize.define('users', {
        id: {
            type: Sequelize.INTEGER,
            primaryKey: true,
        },
        mobile : {
             type: Sequelize.STRING,
        }
        first_name: {
            type: Sequelize.STRING,

        },
        last_name :{
            type: Sequelize.STRING,
            },
        email :{
            type: Sequelize.STRING,
        }
    },
    {
        freezeTableName: true // Model tableName will be the same as the model name
    },
    {
         where: { 
             $and: [
                 sequelize.where(sequelize.fn('lower', sequelize.col('first_name'))),
                  sequelize.where(sequelize.fn('lower', sequelize.col('last_name')))
                ]
            }
    }
);

1 个答案:

答案 0 :(得分:0)

你正在寻找的是beforeCreate() sequelize hook:

const Users = sequelize.define('users', {
        id: {
            type: Sequelize.INTEGER,
            primaryKey: true,
        },
        mobile : {
            type: Sequelize.STRING,
        }
        first_name: {
            type: Sequelize.STRING,

        },
        last_name :{
            type: Sequelize.STRING,
        },
        email :{
            type: Sequelize.STRING,
        }
    },
    {
        freezeTableName: true
    },
    hooks: {
        beforeCreate: function(user){

            user.first_name = user.first_name.toLowerCase();
            user.last_name  = user.last_name.toLowerCase();

            return user;

        }
    }

);