У меня есть 3 таблицы: User, Ship и UserShips.
Последняя - это таблица соединений. Он имеет внешний ключ для пользователя и один для отправки. Пользователь может иметь несколько кораблей, а также более одного корабля.
Я пытаюсь получить с него данные, но у меня ничего не получается.
IЯ определил модель для всех 3.
\\ In another file: the user_ships module
module.exports = (sequelize, type) => {
return sequelize.define('user_ships', {
id: {
type: type.INTEGER,
primaryKey: true,
autoIncrement: true } });
};
\\ In my main sequelize intialization file
const User = UserModel(sequelize, Sequelize);
const Ship = ShipModel(sequelize, Sequelize);
const UserShips = UserShipsModel(sequelize, Sequelize);
Ship.belongsToMany(User, { through: { model: UserShips, unique: false } });
User.belongsToMany(Ship, { through: { model: UserShips, unique: false } });
Я использую unique: false
для предотвращения ограничения уникальности. При просмотре БД это работает нормально. Я могу добавить несколько кораблей для пользователя в этой таблице.
Но при получении информации мне не удается: - получить все корабли для определенного пользователя - извлечь все корабли для всех пользователей, включаяповторяющиеся записи о кораблях, которые я пытался получить через UserModel, а также через модель UserShips.
// I would expect to retrieve 1 user and all his ships (incl. duplicates)
User.findByPk(msg.author.id, {
order: [ [ Ship, 'price', 'DESC'] ],
include: [ {
model: Ship } ] })
.then(user => {
// do things with user and it's ships
})
.catch(error => `Could not find any ships: ${error}.`);
// Same, fetch 1 user with all his ships.
UserShips.findAll({ where: { userDiscordid: msg.author.id },
order: [ [ Ship, 'price', 'DESC'] ],
include: [ { model: Ship } ] })
.then(userShips => {
console.log(userShips);
});
Что не так с тем, как я пытаюсь запрашивать / получать данные?