Здравствуйте, есть 3 таблицы:
Пользователи:
const users = sequelize.define('users', {
login: {
type: Sequelize.STRING,
allowNull: true,
},
email: {
type: Sequelize.STRING,
allowNull: true
},
password: {
type: Sequelize.STRING,
allowNull: false
}
})
Мессенджеры:
const messengers = sequelize.define('messengers', {
user_id: {
type: Sequelize.INTEGER,
allowNull: false,
foreignKey: true
},
messenger_id: {
type: Sequelize.STRING,
allowNull: true
},
login: {
type: Sequelize.STRING,
allowNull: true
}
})
Сообщения:
const messengerMessages = sequelize.define('messenger_messages', {
messenger_id: {
type: Sequelize.INTEGER,
allowNull: false,
foreignKey: true
},
text: {
type: Sequelize.TEXT,
allowNull: true
}
})
И связка этих таблиц:
users.hasMany(messengers, { foreignKey: 'user_id', as: 'userMessenger' })
messengers.belongsTo(users, { foreignKey: 'user_id', as: 'userMessenger' })
messengers.hasMany(messengerMessages, { foreignKey: 'messenger_id', as: 'messengerMessages' })
messengerMessages.belongsTo(messengers, { foreignKey: 'messenger_id', as: 'messengerMessages' })
И мне нужно сгруппировать данные так, что бы получить массивы с сообщениями пользователей, по полю users.id.
Сделал много попыток, перечитал десяток статей, но так и не понял как это реализовать, подскажите, может кто сталкивался с подобным?
await models.messengerMessages.findAll({
include: [{
model: models.messengers,
as: 'messengerMessages',
include: [{
model: models.users,
as: 'userMessenger',
}]
}],
group: ['messengerMessages->userMessenger.id']
})