ORM Sequalize не правильно определяет отношения между моделями

Создаю приложение, используя на беке Node.js, его библиотеку Express и ORM Sequalize для работы с БД. Имеются следующие модели: Рассылки и Квитанции.

const Mailings = sequelize.define("mailings", {
  mailingId: {
    type: types.INTEGER,
    primaryKey: true,
    autoIncrement: true,
    allowNull: false,
  },
  mailingType: { type: types.STRING, allowNull: false },
  dateOfSending: { type: types.DATE, allowNull: true, defaultValue: getCurrentDate()},
  status: { type: types.STRING, allowNull: false, defaultValue: "Отправлено" },
  linkOnReceipt: { type: types.STRING, allowNull: false },
});

const Receipts = sequelize.define("receipts", {
  receiptId: {
    type: types.INTEGER,
    primaryKey: true,
    //autoIncrement: true,
    allowNull: false,
  },
  title: { type: types.STRING, allowNull: false },
  text: { type: types.TEXT, allowNull: false },
});

// Связь 1 к 1
mailings.hasOne(receipts, { foreignKey: "receiptId" });
receipts.belongsTo(mailings, {
  targetKey: "mailingId",
  foreignKey: "receiptId",
});

Между этими моделями связь 1 к 1. Получается, что Рассылки это главная таблица. Без рассылок не могут существовать квитанции, одна рассылка может иметь только одну квитанцию и когда создаётся рассылка, сразу создаётся и квитанция. По логике, receiptId в таблице receipts выступает и в роли первичного ключа, и в роли внешнего для связи с Mailings Но тут встаёт две проблемы: Первая заключается в том, что несмотря на связь один к одному, который должен реализовывать метод hasOne, модели почему-то генерируются со связью один ко многим. введите сюда описание изображения

Вторая проблема, собственно так же видна на рисунке. Таблицы соединены двумя отношениями. Скорей всего это происходит из-за того, что я использую метод hasOne() и belongsTo(). Метод hasOne() автоматически создал внешний ключ mailingMailingId в таблице receipts и связал её с родительской таблицей Mailings. Но это странное поведение. Даже в официальной документации по Sequalize указано, что ассоциации создаются парными вызовами методов haseOne() и belongsTo() введите сюда описание изображения

В общем помогите пожалуйста решить эти проблемы. Почему создаётся связь один ко многим? Почему создаётся ещё одна связь между таблицами? Ведь если убрать hasOne(), то тогда во-первых: я не смогу сказать, что это связь один к одному, а во-вторых, исходя из документации не будут созданы дополнительные методы для работы с данными.


Ответы (0 шт):