Я использую sequelize ORM для работы с БД в моем проекте nodejs. Здесь я написал простой запрос sequelize для получения максимальных идентификаторов каждого драйвера в модели размещения драйверов.
global.driverlocationhistory.findAll({
attributes: [global._sequelize.fn("max", global._sequelize.col('id'))],
group: ["driverId"]
}).then(function (results) {
objDrvr = results;
})
Это не возвращает никакого значения, а также не дает никаких ошибок. Но в базе данных есть значения. При выполнении вышеуказанного запроса sequelize создается запрос SQL. (Это можно увидеть в окне консоли после запуска сервера с помощью node server.js) Вот выполняемый запрос.
SELECT max(`id`) FROM `driverlocationhistory` AS `driverlocationhistory` GROUP BY `driverId`;
Вышеупомянутый SQL-запрос выполняется на сервере mysql, и для этого запроса есть результаты.
Почему он не получает данные для запроса sequelize?






Не могли бы вы попробовать,
await DIR.ProfileModel.findAll({
attributes: [
[sequelize.fn('MAX', sequelize.col('profile_id')), 'profile_id'],
],
group: ['user_id'],
raw: true,
});
Продолжить генерировать:
Executing (default): SELECT MAX(
profile_id) FROMprofileASprofileGROUP BYuser_id;
И вернем результаты:
{ profile_id: 106 },
{ profile_id: 187 },
{ profile_id: 109 },
{ profile_id: 111 },
{ profile_id: 112 },
{ profile_id: 113 },
{ profile_id: 115 },
{ profile_id: 116 },
{ profile_id: 117 },
{ profile_id: 120 },
{ profile_id: 121 },
Если raw равно false, dataValues пусто, я понятия не имею, почему
{
profile {
dataValues: {},
_previousDataValues: {},
_changed: {},
_modelOptions:
{
timestamps: false,
validate: {},
freezeTableName: false,
underscored: false,
underscoredAll: false,
paranoid: false,
rejectOnEmpty: false,
whereCollection: null,
schema: null,
schemaDelimiter: '',
defaultScope: {},
scopes: [],
indexes: [],
name: [Object],
omitNull: false,
charset: 'utf8',
collate: 'utf8_general_ci',
tableName: 'profile',
sequelize: [Object],
hooks: [Object],
uniqueKeys: {}
},
}
}
Sometimes you might be expecting a massive dataset that you just want to display, without manipulation. For each row you select, Sequelize creates an instance with functions for update, delete, get associations etc. If you have thousands of rows, this might take some time. If you only need the raw data and don't want to update anything, you can do like this to get the raw data.
Удачи!
Готово ... Спасибо :)
Может тогда ответ выкинуть как правильный? Чтобы следующий человек узнал об этом