[SOLVED] Sequelize: updating updatedAt manually

Issue

Below is the code I am using in Hooks to update the updatedAt column for two objects:

hooks: {
                afterUpdate: (group, options, callback) => {
                    console.log("groudId " + groupId + " options " + options)
                },
                afterCreate: (member, options, callback) => {
                    return new Promise((resolve, reject) => {
                        sequelize.models.Group.findOne({
                            where: {
                                id: member.group_id
                            }
                        }).then((group) => {
                            if (group) {
                                var date = new Date();
                                console.log("BEFORE group.updatedAt " + group.updatedAt)
                                group.dataValues.updatedAt = new Date()
                                console.log("CHANGED group.updatedAt " + group.updatedAt)
                                group.save().then((Group) => {
                                    if (Group) {
                                        console.log("UPDATED Group.updatedAt " + Group.updatedAt)
                                        console.log("UPDATED group.updatedAt " + group.updatedAt)
                                        resolve(Group)
                                    } else {
                                        console.log("NO GROUP Found")
                                        return reject(group.id)
                                    }
                                }).catch((error) => {
                                    return (error)
                                })
                            } else {
                                return reject(id)
                            }
                        }).catch((error) => {
                            return (reject)
                        })
                    })
                }

Console Log:

BEFORE group.updatedAt Fri Feb 17 2017 17:36:00 GMT-0800 (PST)
CHANGED group.updatedAt Tue Feb 28 2017 14:00:17 GMT-0800 (PST)
UPDATED Group.updatedAt Tue Feb 28 2017 14:00:17 GMT-0800 (PST)
UPDATED group.updatedAt Tue Feb 28 2017 14:00:17 GMT-0800 (PST)
BEFORE group.updatedAt Fri Feb 17 2017 17:36:00 GMT-0800 (PST)
CHANGED group.updatedAt Tue Feb 28 2017 14:00:19 GMT-0800 (PST)
UPDATED Group.updatedAt Tue Feb 28 2017 14:00:19 GMT-0800 (PST)
UPDATED group.updatedAt Tue Feb 28 2017 14:00:19 GMT-0800 (PST)

While the log, what I think, appears correct, why isn’t the actual object in the DB updated to the new updatedAt value? Or is there an easier way to update an objects updatedAt column?

Solution

None of the above worked for me, so I had to use model method instead:

await MyModel.update({ updatedAt }, { where: { id: instance.id }, silent: true });

Answered By – Alexander Zinchuk

Answer Checked By – Timothy Miller (BugsFixing Admin)

Leave a Reply

Your email address will not be published.