Почему sequelize query возвращает один элемент, но raw SQL возвращает 2 элемента?

#sequelize.js

#sequelize.js

Вопрос:

Вот запрос в sequelize (6.3.5) с Artwork присоединением модели Artimage :

     const { Artwork, validateArtwork} = require('../models/artwork');
    const { Artimage, validateArtimage} = require('../models/artimage');
    artworks = await Artwork.findAll({
            where : { 
                id: {[Op.gt]:last_artwork_id},
            },
            include: [{
                model:Artimage,
                attributes:['width', 'height', ['name', 'img_name'], 'path', 'size_kb', ['label', 'img_label'], ['fileName', 'img_fileName']],
                
            }],
            attributes:{excludes:['fort_token']},
            order:[['id', 'DESC']]
        });
  

Здесь, когда last_artwork_id равно 7, artwork#8 выбирается с его 2 изображениями artimage . Однако artworks.length 1 вместо 2 . Но когда выполняется необработанный SQL-код, он возвращает 2 записи, для которых есть 2 изображения artwork#8 . Вот необработанный SQL из приведенного выше кода:

  SELECT "artwork"."id", "artwork"."name", "artwork"."auther", "artwork"."category", "artwork"."wt_g", "artwork"."production_year", "artwork"."dimension", 
 "artwork"."uploader_id", "artwork"."description", "artwork"."note", "artwork"."tag", "artwork"."deleted", "artwork"."status", "artwork"."artwork_data", 
 "artwork"."last_updated_by_id", "artwork"."fort_token", "artwork"."createdAt", "artwork"."updatedAt", "artimages"."id" AS "artimages.id", 
 "artimages"."width" AS "artimages.width", "artimages"."height" AS "artimages.height", "artimages"."name" AS "artimages.img_name", "artimages"."path" AS "artimages.path", 
 "artimages"."size_kb" AS "artimages.size_kb", "artimages"."label" AS "artimages.img_label", "artimages"."fileName" AS "artimages.img_fileName" FROM 
 "artworks" AS "artwork" LEFT OUTER JOIN "artimages" AS "artimages" ON "artwork"."id" = "artimages"."artwork_id" WHERE "artwork"."id" > 7 ORDER BY "artwork"."id" DESC
  

Почему artworks.length 1 элемент sequelizejs вместо 2 элементов (правильно)?

Ответ №1:

sequelizejs возвращает объединенный artimage в массив объект с ключом имени таблицы artimages : artworks.artimages[0] amp; artworks.artimages[1]