Visuja
Visuja

Reputation: 87

Define Sequelize model such as all inserted entries should be in lowercase

I need to insert first_name and last_name in a lower case using sequelize and NodeJS. How do I define a model where all entries should be in lower case?

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')))
                ]
            }
    }
);

Upvotes: 4

Views: 3379

Answers (1)

wscourge
wscourge

Reputation: 11291

What you're looking for is 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;

        }
    }

);

Upvotes: 4

Related Questions