У меня есть вопрос о typeorm и @ JoinTable - и @ RelationId -Декоратор.Может быть, кто-нибудь может помочь ответить на мой вопрос, дать подсказку или идеально решить мою проблему.
Я использую nestjs с typeorm, чтобы предоставить частный API с рецептами для моей семьи и меня.
Если я разрушу структуру базы данных до минимума, мы получим три основных объекта:
recipe
- id INT(11)
- name VARCHAR(255)
# PRIMARY KEY is id
ingredient
- id INT(11) // not autoincrement, fetched from https://www.programmableweb.com/api/chomp
- name VARCHAR(255)
- recipeId INT(11)
# PRIMARY KEY is a composite key (id, recipeId)
# FOREIGN KEY is recipeId on recipe
step
- id INT(11)
- name VARCHAR(255)
- recipeId INT(11)
# PRIMARY KEY is id
# FOREIGN KEY is recipeId on recipe
Итак, это мои три основных объекта для моих рецептов.Рецепт может состоять из нескольких шагов ( много -шагов к- один -рецепт), а рецепт может иметь несколько ингредиентов ( много -ingredients-to- один рецепт)
Теперь сложная часть.Каждый шаг может иметь отношение к одному или нескольким ингредиентам.Это приводит к следующей таблице отношений.
ingredient_steps_step
- ingredientId INT(11)
- stepId INT(11)
- recipeId INT(11)
# PRIMARY KEY is a composite key (ingredientId, stepId, recipeId)
# FOREIGN KEYS are ingredientId on ingredient, stepId on step, recipeId on recipe
Мой ингридиент.entity.ts выглядит следующим образом:
@ManyToMany(type => Step, step => step.ingredients)
@JoinTable({
name: 'ingredient_steps_step',
joinColumns: [
{name: 'ingredientId'},
{name: 'recipeId'},
],
inverseJoinColumns: [
{name: 'stepId'},
],
})
steps: Step[];
@RelationId((ingredient: Ingredient) => ingredient.steps)
stepIds: number[];
@PrimaryColumn()
recipeId: number;
@PrimaryColumn()
id: number;
@ManyToOne(type => Recipe, recipe => recipe.ingredients)
recipe: Recipe;
Проблема в том, что моя таблица ингредиентов заполнена, но таблица отношений ( component_steps_step ) не заполняется записями.Проблема в том, что нет такого декоратора, как @ RelationIds , где я могу предоставить два столбца для отношения к сущности step .
Было бы здорово, если бы кто-нибудь из вас мог помочь мне с этим.Может быть, необходимо предоставить вам больше информации о других организациях?
С уважением,
digitalhacke