упорядочить вложенные включения Есть запись для таблицы , но на нее нельзя ссылаться в этой части запроса

#postgresql #sequelize.js

Вопрос:

Я использую секвенирование и вложенное включение. Я хочу, чтобы стол ModelC был соединен со столом ModelB id и со ModelA SomeColumnId столом . Таблицы ModelC и ModelA не имеют связей друг с другом, но у них обоих есть связи ModelB (hasMany-принадлежит). До сих пор это мой код:

 const model = await ModelA.findAll({
    include: {
        model: ModelB,
        include: {
            model: ModelC,
            where: {
                [Op.and]: [
                    sequelize.literal(
                        '"ModelB->ModelC"."SomeColumnId" = "ModelA"."SomeColumnId"'
                    ),
                ],
            },
        },
    },
    subQuery: false,
    raw: true,
});
 

Но это дает мне ошибку:

 Invalid reference to FROM-clause entry for table "ModelA".
There is an entry for table "ModelA", but it cannot be referenced from this part of the query.
 

Как я могу решить эту проблему?

Ответ №1:

Мне удалось решить эту проблему.

 const model = await ModelA.findAll({
    include: {
        model: ModelB,
        raw: true,
        include: {
            model: ModelC,
            required: false,
            where: {
                SomeColumnId: [sequelize.literal('"ModelA"."SomeColumnId"')],
            },
        },
    },
});