#sequelize.js #sql-order-by
#sequelize.js #sql-порядок по
Вопрос:
Я не могу понять, как упорядочить по столбцу, который находится в моей включенной модели. Но я даже не возвращаю это поле в атрибутах. Я просто хочу заказать по нему, если это возможно. Или я могу вернуть его и не использовать, пока я могу сортировать по нему.
const users = await db.User.findAll({
raw: true,
attributes: [
'id',
'first_name',
'last_name',
'email',
'Permission.type'
],
include: [
{
model: db.Permission,
where: { id: { [Op.lte]: 2 } },
attributes: [],
order: [[{ model: db.Permission }, 'id', 'DESC']]
}
]
});
В include
блоке order
блок сейчас ничего не делает. Но у меня есть атрибут в моей модели разрешений id
, по которому я хочу упорядочить все результаты. Я согласен с добавлением Permission.id
к моему attributes
, если это необходимо. Но я попробовал, и это все равно не сработало.
Ответ №1:
Просто переместите order
опцию из include
основных параметров:
const users = await db.User.findAll({
raw: true,
attributes: [
'id',
'first_name',
'last_name',
'email',
'Permission.type'
],
include: [
{
model: db.Permission,
where: { id: { [Op.lte]: 2 } },
attributes: []
}
],
order: [[{ model: db.Permission }, 'id', 'DESC']]
});
Также, возможно, вам следует указать id
в include
атрибутах.
Комментарии:
1. Хорошо, это сработало! Я не мог заставить его работать раньше, но я менял несколько вещей одновременно. Мне также пришлось вернуть идентификатор в основных атрибутах. Если бы я попытался вернуть его в атрибуты включения, он сломался, и я не получил никаких результатов.
2. Пожалуйста, никогда не пытайтесь изменить несколько вещей одновременно. Таким образом, вы не можете сказать, что именно вызвало проблему.