我对使用Sequelize还是比较陌生,遇到了一个我无法解决的问题!我正在使用Sequelize更新方法,它产生的查询似乎是正确的,并且没有代码错误,但是我的数据库没有被更新!例如,这是我的代码...
/*
* @param {boolean} eula - true if accepted
* @param {object} user to whom dataset belongs.
* @returns {Promise} with the result of the action.
*/
updateUserAcceptance(eula, user) {
return db.sequelize.transaction(transaction =>
db.User.findById(user.userId, {
user,
transaction
}).then(selectedUser => {
if (selectedUser !== null) {
return db.User.update({
EulaAccepted: eula,
EulaAcceptedDate: Date.now()
}, {
where: {ID: user.userId},
autocommit: true,
user,
transaction
});
}
logger.warn('Unkown user or access not allowed');
throw new Error('Unkown user');
}))
.then(() => {
const result = {success: true};
logger.info('UpdateEulaAccepted transaction successful');
return result;
}).catch(Sequelize.ValidationError, err => {
const result = {success: false, validationError: true};
result.error = ValidationHelper.ensureErrorFormat(err.errors);
return result;
}).catch(err => {
const result = {success: false, errorMessage: 'Common Error'};
logger.error('Unable to UpdateEulaAccepted to the database. Rolling back transaction');
logger.error(err);
return result;
});
}
这似乎是正确的,因为我没有语法错误,已经检查了传递的参数,并且这些参数正确,并且未触发错误捕获。我在控制台中注意到以下内容
QUERY: Executing (beba1d58-a408-4aa8-afa7-a2522a8f337f): UPDATE "User" SET "EulaAccepted"=true,"EulaAcceptedDate"='2018-08-10 11:19:54.933 +00:00',"ModificationDate"='2018-08-10 11:19:54.934 +00:00' WHERE (("DeletionDate" > '2018-08-10 11:19:54.933 +00:00' OR "DeletionDate" IS NULL) AND "ID" = 'aad025c8-2ecb-4a07-bd0d-e62476d25188')
这是正确的,我应该在pgAdmin 4中运行该SQL成功并更新我的行...但是,尽管我的应用程序不在控制台中,但未设置/执行查询,也没有返回诺言,并且我的应用程序挂然后崩溃!没有警告或错误未写入控制台?我以为添加了autocommit: true,
选项,但这是行不通的!
谁能建议我如何执行或执行此任务?也许还有强制执行的额外选择?我完全不知道为什么这种情况不会发生,并且必须花5个小时解决这个问题。
更新。这里是我要更新的表的数据库字段
ID-uuid
SelectedLanguage-字符变化10
电子邮件-字符变化50
名称-字符变化50
CreationDate-带有时区的时间戳
ModificationDate-带有时区的时间戳
DeletionDate-带有时区的时间戳
ClientID-uuid
CreatorID-uuid
ModifierID-uuid
TemporaryPassword-字符变化50
ChangePasswordToken-字符变化50
TokenExpirationDate-带有时区的时间戳
EulaAccepted-布尔值
EulaAcceptedDate-带时区的时间戳
isOrgAdmin-字符变化50