Search This Blog

2023/04/24

Mysql Sequelize get datetime in local timezone

 In sequelize even if we set timezone when we create a record ,it

createdAt & updatedAt dates are always in UTC timezone.
but when i save a record in database time is in indian timezone.I

I am initializing my connection with following code

const sequelize = new Sequelize(
process.env.MYSQL_DATABASE,
process.env.MYSQL_USER_NAME,
process.env.MYSQL_PASSWORD, {
dialect: 'mysql',
host: process.env.MYSQL_HOST,
port: process.env.MYSQL_PORT,
dialectOptions: {
dateStrings: true,
typeCast: true
},
timezone: '+05:30', // for writing to database
}
);


so i am modifying my User Model class as follows

const sequelize = require('../utils/database')
const bcrypt = require("bcrypt");
var moment = require('moment')

module.exports = function (sequelize, DataTypes) {
const User = sequelize.define('User', {
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true
},
firstName: {
type: DataTypes.STRING,
field: 'firstName'
},
lastName: {
type: DataTypes.STRING,
field: 'lastName'
},
email: DataTypes.STRING,
password: DataTypes.STRING,
createdAt: {
type: DataTypes.DATE,
get: function () { // or use get(){ }
var originalDate = this.getDataValue('createdAt')
return moment(originalDate).utcOffset(330).
format('YYYY-MM-DD HH:mm:ss');
}
},
updatedAt: {
type: DataTypes.DATE,
get: function () { // or use get(){ }
var originalDate = this.getDataValue('createdAt')
return moment(originalDate).utcOffset(330).
format('YYYY-MM-DD HH:mm:ss');
}
}
}, {
freezeTableName: true,
hooks: {
beforeCreate: async (user, options) => {
user.password = await bcrypt.hash(user.password, bcrypt.genSaltSync(8))
}
},
classMethods: {

},
instanceMethods: {
generateHash(password) {
return bcrypt.hash(password, bcrypt.genSaltSync(8))
}
}
});
return User;
}

Here in createdAt & updatedAt I added proprty getter get function,
now you can get createdAt & updatedAt in indian timezone even in
output of User models Create.

Code can be found at :https://github.com/gitsangramdesai/sequelize-validation

No comments:

Post a Comment