Я пытаюсь получить модель schedule_class в порядке возрастания, используя столбец startAt. Ассоциации для моделей следующим образом.
Сначала я запрашиваю базу данных для sched_class, а затем класс, связанный с моделью, а затем включаю все запланированные классы, связанные с моделью класса, где они попадают в заданный диапазон. Я смог получить данные, не заказывая их. Когда я добавляю атрибут order для продолжения, он дает следующую ошибку. Как я могу получить запланированные классы в порядке возрастания в столбце startAt? '
"message": "Неизвестный столбец" class.name "в" order clause "," code ": 500," className ":" general-error "," data ": {}
module.exports = function () {
return function (context) {
const sequelize = context.app.get('sequelizeClient');
context.params.sequelize = {
raw: false,
include: [ {model: sequelize.models.attendance, paranoid: true} ],
order: []
};
if(context.params.query && context.params.query.includeClasses) {
let startDate = new Date();
startDate.setMonth(startDate.getMonth() -1);
startDate.setDate(1);
let endDate = new Date();
endDate.setMonth(endDate.getMonth() + 2);
endDate.setDate(0);
context.params.sequelize.include.push(
{
model: sequelize.models.classes,
paranoid: true,
include:[
{
model:sequelize.models.teacher,
paranoid: true
},
{
model:sequelize.models.scheduled_class,
paranoid: true,
where: {
startsAt: {
$gte: startDate
},
endsAt: {
$lte: endDate
}
},
},
],
order: [[sequelize.models.teacher, 'id', 'DESC']]
});
context.params.sequelize.order.push([sequelize.models.classes, 'name', 'DESC']);
//context.params.sequelize.order.push([sequelize.models.teacher, 'id', 'DESC']);
//context.params.sequelize.order.push([sequelize.models.scheduled_class, 'startsAt', 'DESC']);
delete context.params.query.includeClasses;
}
};
};
Я смог решить проблему, добавив родительскую модель в предложение order.
module.exports = function () {
return function (context) {
const sequelize = context.app.get('sequelizeClient');
context.params.sequelize = {
raw: false,
include: [ {model: sequelize.models.attendance, paranoid: true} ],
order: []
};
if(context.params.query && context.params.query.includeClasses) {
let startDate = new Date();
startDate.setMonth(startDate.getMonth() -1);
startDate.setDate(1);
let endDate = new Date();
endDate.setMonth(endDate.getMonth() + 2);
endDate.setDate(0);
context.params.sequelize.include.push(
{
model: sequelize.models.classes,
paranoid: true,
include:[
{
model:sequelize.models.teacher,
paranoid: true
},
{
model:sequelize.models.scheduled_class,
paranoid: true,
where: {
startsAt: {
$gte: startDate
},
endsAt: {
$lte: endDate
}
},
},
],
});
context.params.sequelize.order.push([sequelize.models.classes, sequelize.models.scheduled_class, 'startsAt', 'ASC']);
delete context.params.query.includeClasses;
}
};
};
Здесь, после включения класса => schedule_class model, я подтолкнул порядок по команде schedule_class.startsAt ASC для заказа массива.