mysql - Sequelize 中的 findAll() 找不到在事务中创建的行

标签 mysql node.js sequelize.js

我在创建行和稍后在同一事务下选择它时遇到问题。

每当我执行以下代码时,我通常会得到一个空数组,很少会得到一个包含新创建的行的数组。

这是我运行的代码示例:

return seq.transaction((tx) => {
    const options = {transaction: tx};
    return model.create(user, options)
    .then(() => {
        return model.findAll({
            include: {
                all: true
            }
    }, options)
    .then((data) => ({
        console.log(data);
    });
});

我在这里缺少一些基本的东西吗? 谢谢!

最佳答案

我解决了这个问题。 我做错的是将事务作为附加参数而不是第一个参数的 JSON 的一部分提供给 findAll() 函数。

所以代替:

return model.findAll({
    include: {
        all: true
    }
}, options)

我应该做的:

return model.findAll({
    include: {
        all: true
    },
    transaction: options.transaction
});

希望这个解决方案对其他人有帮助。

关于mysql - Sequelize 中的 findAll() 找不到在事务中创建的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62512093/

相关文章:

MYSQL REGEXP 搜索 JSON 字符串

php - 如何使用pdo准备语句在mysql中插入多条记录?

mysql - 用于保存统计数据并保存统计历史记录的数据库设计

node.js - 谷歌云打印 API : User credentials required

javascript - node.js + sequelize + 顺序执行

mysql - Sequelize 使用 postgres 方言添加双列

php - 如何选择两个数字范围之间的结果?

node.js - 在Node.js中重新连接后如何正确检查RabbitMQ channel 是否已打开?

php - 在 PHP 或 Node.js 中读取编码错误的 JSON 文件

node.js - Sequelize 模型单元测试