node.js - Sequelize 事务和增量

标签 node.js sequelize.js

我在使用 sequelize.transactionmodel.increment 时遇到问题
我有这个简单的模型

class Wallet extends Model {}

Wallet.init(
  {
    // Model attributes are defined here
    id: {
      type: DataTypes.INTEGER.UNSIGNED,
      autoIncrement: true,
      primaryKey: true,
      allowNull: false,
    },
    availableBalance: {
      type: DataTypes.FLOAT,
      allowNull: false,
      defaultValue: 0,
    },
  }
);
我试图这样做:
const wallet = await Wallet.findById(1);
await sequelize.transaction(async t => {
      //more sentences
      wallet.increment('availableBalance', { by: 1, transaction: t });
});
这是失败的:

Error: commit has been called on this transaction(6de20ad2-ab57-4038-9003-fabff6437449), you can no longer use it.


注意:交易里面有更多的句子,但我只留下了冲突的那一行(增量句子)
任何想法?

最佳答案

您忘记等待异步 increment 调用:

const wallet = await Wallet.findById(1);
await sequelize.transaction(async t => {
      //more sentences
      await wallet.increment('availableBalance', { by: 1, transaction: t });
});

关于node.js - Sequelize 事务和增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65494951/

相关文章:

webpack - 如何防止 webpack bundle ?

javascript - 如何为同一行创建多个where子句?

controller - 序列化类方法

node.js - 这对于调用处理 Sequelize 的方法是否很典型?

node.js - Meteor - 连接超时。没有收到心跳

node.js - ExpressJs 服务多个静态文件夹不工作

node.js - Nodejs 从 CouchDB 流式传输视频并显示在视频标签中

node.js - 尝试在 TypeScript 中添加监听事件

javascript - Promise.allSettled() 响应的类型错误

node.js - Sequelize - 不能从多对多选择中获得正确的结果