如何在 Sequelize 中从同一个 table 急切加载多个外键行?

How do I eager load multiple foreign key rows from the same table, in Sequelize?

我有一个数据库 table Template,它存储 created_byupdated_bydeleted_by 的用户 ID。所有三个引用 table User。我正试图将所有三个用户作为完整对象加载到模板对象中,但我根本不知道如何做。我找到的所有 include 文档在定义预加载关系时仅指模型名称。但在这种情况下,returns 只是一个用户,每个模板对象中的属性被命名为 User 而不是预期的三个 createdByupdatedBydeletedBy.

我试图找出一种通过列名或其他引用来包含的方法。我也尝试包括所有,但同样,一个用户属性和其他三个整数键显示为值。

    getTemplateList = async (req, res, t) => {
        const templateList = await Template.findAll({
            transaction: t,
            include: { all: true }
        });       
        return {status: 201, content: templateList};
    }

模板中的相关关系定义:

    this.belongsTo(User, {
            foreignKey: {
                as: 'createdBy',
                field: 'created_by',
                allowNull: false
            },
        });
        this.belongsTo(User, {
            foreignKey: {
                as: 'updatedBy',
                field: 'updated_by',
                allowNull: false
            },
        });
        this.belongsTo(User, {
            foreignKey: {
                as: 'deletedBy',
                field: 'deleted_by',
                allowNull: true
            },
        });

用户中的相关关系定义:

 this.hasMany(Template, {
        foreignKey: {
            as: 'createdBy',
            field: 'created_by',
            allowNull: false
        },
    });
    this.hasMany(Template, {
        foreignKey: {
            as: 'updatedBy',
            field: 'updated_by',
            allowNull: false
        },
    });
    this.hasMany(Template, {
        foreignKey: {
            as: 'deletedBy',
            field: 'deleted_by',
            allowNull: true
        },
    });

我已经尝试过使用和不使用 as 属性

您在 foreignKey 选项内的关联中指明了别名,而不是在 foreignKey 选项旁边指明它们:

this.belongsTo(User, {
            foreignKey: {
                field: 'created_by',
                allowNull: false
            },
            as: 'createdBy',
        });
        this.belongsTo(User, {
            foreignKey: {
                field: 'updated_by',
                allowNull: false
            },
            as: 'updatedBy',
        });
        this.belongsTo(User, {
            foreignKey: {
                field: 'deleted_by',
                allowNull: true
            },
            as: 'deletedBy',
        });

User 协会也是如此。