Я пытаюсь использовать модель соединительной таблицы для создания нового объекта в Sequelize. Я довольно тщательно прочитал документы и не верю, что этот вариант использования покрыт, если только я не понимаю (что всегда возможно).
Документы: https://sequelize.org/master/manual/assocs.html https://sequelize.org/master/class/lib/associations/belongs-to-many.js~BelongsToMany.html
Пример кода:
import { Model as SQLModel } from 'sequelize';
class CarCompany extends SQLModel {};
class BodyStyle extends SQLModel {};
class Model extends SQLModel {};
// A car company can make multiple types of cars
CarCompany.hasMany(BodyStyle);
// A type of car can be made by multiple companies.
// We have a junction table to represent this relationship
BodyStyle.belongsToMany(CarCompany, { through: CarCompanyBodyStyles });
// Each model has only one type that it fits into and only one company that makes it
Model.belongsTo(CarCompanyBodyStyles);
// Now let's create some example car types
const convertible = new BodyStyle({ name: 'Convertible' });
const suv = new BodyStyle({ name: 'SUV' });
// Now let's create some example car companies
const toyota = new CarCompany({ name: 'Toyota' });
const ferrari = new CarCompany({ name: 'Ferrari' });
// Now let's specify which types of cars are made by each company
const toyotaConvertibles = toyota.addBodyStyle(convertible);
const toyotaSUVs = toyota.addBodyStyle(suv);
const ferrariConvertibles = ferrari.addBodyStyle(convertible);
// Now let's define some specific models
const solara = toyotaConvertibles.createModel({ name: 'Solara' });
const rav4 = toyotaSUVs.createModel({ name: 'RAV-4' });
const spider = ferrariConvertibles.createModel({ name: '488 Spider' });
// Now lets see some nested relational objects that we have created:
const toyotaModels = CarCompany.findByPk(
toyota.id,
{
include: [
{
all: true,
nested: true,
},
],
},
);
const ferrariModels = CarCompany.findByPk(
ferrari.id,
{
include: [
{
all: true,
nested: true,
},
],
},
);
console.log({ ferrariModels, toyotaModels });
То, что я надеялся увидеть, выглядит примерно так:
{
ferrariModels: {
bodyStyles: [
{
name: 'Convertible',
models: [
{ name: '488 Spider' },
],
},
],
},
toyotaModels: {
bodyStyles: [
{
name: 'SUV',
models: [
{ name: 'RAV-4' },
],
},
{
name: 'Convertible',
models: [
{ name: 'Solara' },
],
},
],
},
}
Но вместо этого я получаю ошибку :
TypeError: toyotaConvertibles.createModel is not a function
Что я делаю не так? Как я должен go создать такой тип отношений?