Задать вопрос
@femalemoustache

Как осуществить выборку с limit для моделей со связью «много-ко-многим» в Sequelize ORM?

Имеются две модели, определенные при помощи Sequelize: Post и Tag, связанные по типу "много-ко-многим":

Post.belongsToMany(db.Tag, {through: 'post_tag', foreignKey: 'post_id', timestamps: false});
Tag.belongsToMany(db.Post, {through: 'post_tag', foreignKey: 'tag_id',timestamps: false});

Для страницы тега мне нужно получить данные о теге и посты с данным тегом, которые нужно вывести с постраничной навигацией. Т.е. нужно указывать для связанной модели Post атрибуты limit и offset. Пока проблема с limit. Первым делом я попробовал просто указать его внутри include:
Tag.findOne({
    where: {url: req.params.url},
    include: [{
        model : Post,
        limit: 10
    }]
}).then(function(tag) {
    //handling results
});

Получаю ошибку:
Unhandled rejection Error: Only HasMany associations support include.separate

Пробую поменять для Tag belongsToMany на hasMany, снова получаю ошибку:
Error: N:M associations are not supported with hasMany. Use belongsToMany instead

Смотрю документацию про limit внутри include: "only supported with include.separate=true".

Получается замкнутый круг: мне нужно указать limit для связи "many-to-many", но он поддерживается только типом связи, который нельзя использовать для "many-to-many".

Есть ли варианты, как решить данную проблему?
  • Вопрос задан
  • 676 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы