시도 1 : limit 을 여기저기 넣어봤다.
다대다 관계에서 limit 과 offset 을 설정하고 싶었다.
그러나 limit 을 아무리 넣어도 모든 데이터가 결과로 찍혔다.
UserModel.findAll({
where: {
id: userId,
},
include: [
{
model: ItemModel,
required: true,
as: 'Item',
limit: 1, // 소용없다
through: {
attributes: ['UserId', 'ItemId'],
limit: 1, // 소용없다
}
}
],
limit: 1, // 소용없다
})
.then((result) => {
console.log(result)
})
시도2 : separate=true 속성을 사용해보았다.
Only HasMany associations support include.separate
에러발생
N:M 관계에서 에서는 해당 속성을 지원하지 않는다고 한다.
시도3 : subQuery: false (해결!!)
참고한 링크 를 보면 공식문서에도 없는 방법이라고 한다.
적용하니 아주 쉽게 문제가 해결되었다.
답변작성자는 node_modules / sequelize / lib / dialect / abstract / query_generator.js 파일을 열어봤다고 한다.
나도 경로를 따라서 봤지만, false 로 한다고 어떻게 가능한지 잘 모르겠다.
또 알아낸 것은
null
로 넣어도 잘 작동하지만,
undefined
로 넣으면 제대로 작동하지 않는다.
UserModel.findAll({
where: {
id: userId,
},
include: [
{
model: ItemModel,
required: true,
as: 'Item',
through: {
attributes: ['UserId', 'ItemId']
}
}
],
offset: Number(offset) || 0,
limit: 5,
subQuery: false // 이 부분을 추가해줬더니 원하는 결과가 나왔다.
})
.then((result) => {
console.log(result)
})
감사합니다 !!