顺序更新未提交/更新数据库

时间:2018-08-10 11:56:25

标签: javascript node.js sequelize.js

我对使用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

0 个答案:

没有答案