Заказ результатов загруженных моделей в Node Sequelize
У меня есть сложный набор связанных моделей. Модели связаны с использованием таблиц соединений, каждый из которых имеет атрибут "order". Мне нужно иметь возможность запрашивать родительскую модель "Страница" и включать связанные модели и сортировать эти ассоциации по полю "порядок".
Следующее не влияет на порядок сортировки результатов:
db.Page.findAll({
include: [{
model: db.Gallery,
order: ['order', 'DESC'],
include: [{
model: db.Artwork,
order: ['order', 'DESC']
}]
}],
})
Ответы
Ответ 1
Я считаю, что вы можете сделать:
db.Page.findAll({
include: [{
model: db.Gallery
include: [{
model: db.Artwork
}]
}],
order: [
[ db.Gallery, 'order', 'DESC' ],
[ db.Gallery, db.ArtWork, 'order', 'DESC' ]
]
})
Ответ 2
Если вы также используете "как" и скажете, что хотите заказать "createdDate", запрос выглядит так:
DbCategoryModel.findAll({
include: [
{
model: DBSubcategory,
as: 'subcategory',
include: [
{
model: DBProduct,
as: 'product',
}
],
}
],
order: [
[
{model: DBSubcategory, as: 'subcategory'},
{model: DBProduct, as: 'product'},
'createdDate',
'DESC'
]
]
})
Ответ 3
order: [
[ db.Sequelize.col('order'), 'DESC'], /*If you want to order by page module as well you can add this line*/
[ db.Gallery, db.ArtWork, 'order', 'DESC' ]
]