Sequelize связь с отделением: истина и доступ к значению из внешнего запроса - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь позвонить в (postgres) БД, используя sequelize (-typescript). К сожалению, это довольно сложный запрос, который в настоящее время работает просто отлично, однако сейчас я пытаюсь добавить нумерацию страниц, и ничего не получается ... код ниже ...

const list = await WorkOrderLine.findAndCountAll({ 
            where: processParams(request),
            order: [ 
                [ { model: WorkOrder, as: 'workOrder' }, 'dueDate', 'ASC' ],
                [ { model: PartOperation, as: 'currentOperation' }, 'operationNumber', 'ASC']
            ],
            include: [
                { 
                    model: WorkOrder,
                    where: { orgId: authed.orgId },
                    required: true,
                },
                {
                    model: PartOperation,
                    as: 'currentOperation',
                    where: { 
                        partId: { [Op.col]: 'WorkOrderLine.part_id' },
                    },
                    required: false,
                    include: [
                        {
                            model: ProductionOperation,
                            as: 'productionOperation',
                            where: { 
                                workOrderLineId: { [Op.col]: 'WorkOrderLine.id' },
                            },
                            required: false
                        }, {
                            model: Operation,
                            as: 'operation'
                        }
                    ]
                }
            ]
        });

работает просто отлично. ... Однако, когда я добавляю

separate: true

к ассоциации currentOperation, я получаю следующую ошибку ...

{ error: missing FROM-clause entry for table "currentOperation"
       at Connection.parseE (/home/tzannetos/Sources/Asolare/tumult-api/node_modules/pg/lib/connection.js:604:11)
       at Connection.parseMessage (/home/tzannetos/Sources/Asolare/tumult-api/node_modules/pg/lib/connection.js:401:19)
       at Socket.<anonymous> (/home/tzannetos/Sources/Asolare/tumult-api/node_modules/pg/lib/connection.js:121:22)
       at Socket.emit (events.js:189:13)
       at Socket.EventEmitter.emit (domain.js:441:20)
       at addChunk (_stream_readable.js:284:12)
       at readableAddChunk (_stream_readable.js:265:11)
       at Socket.Readable.push (_stream_readable.js:220:10)
       at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)

Определение ассоциации для currentOperation следующее: .

@HasMany(() => PartOperation, { foreignKey: 'partId', sourceKey: 'partId'})
public currentOperation: PartOperation[];

Причина, по которой я добавляю отдельное: true, заключается в том, что я хочу добавить смещение и лимит, но я не хочу, чтобы это применялось к ассоциации .... Я хочу n экземпляров. WorkOrderLine, независимо от того, сколько ProductionOperation найдено для каждого.

Я предполагаю, что проблема связана с предложением where, которое ссылается на значение из родительского объекта.

Буду очень признателен за любую помощь или совет по лучшему способу достижения этой цели.

PS Я пытался удалить ссылку на currentOperation из предложения order, но это не помогло!

...