【发布时间】:2020-10-06 10:26:12
【问题描述】:
这是 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 及其在artimage 中的2 个图像。但是artworks.length 是1 而不是2。但是当执行原始 SQL 代码时,它返回 2 个条目,因为 artwork#8 有 2 个图像。这是上面代码中的原始 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 与sequelizejs 是1 项而不是2 项(正确)?
【问题讨论】:
标签: sequelize.js