У меня есть объект Project
с неавтоматизированным полем id и полем-преемником. Этот преемник является проектом, который следует далее. Но, возможно, нет следующего проекта, поэтому он может быть нулевым.
@Entity()
export class Project extends BaseEntity {
@PrimaryColumn({ unique: true })
public id: string;
@OneToMany(() => Project, project => project.id, { nullable: true })
public successorId?: string;
}
При создании нового проекта через
public createProject(id: string, successorId?: string): Promise<Project> {
const project: Project = new Project();
project.id = id;
project.successorId = successorId;
return project.save();
}
есть несколько случаев, о которых мне нужно позаботиться.
Передача идентификатора, который уже существует:
Это не приведет к ошибке. Он просто переопределяет существующую сущность.
Передача undefined
для successorId
:
Тогда код работает нормально, но не создает successorId
столбец с null
тогда. Столбец просто не существует в базе данных.
Передача идентичного идентификатора для id
и successorId
(это должно быть возможно):
Броски TypeORM ошибка
TypeError: Невозможно прочитать свойство 'joinColumns' неопределенного
Передача successorId
другого существующего проекта:
Я получаю ту же ошибку, что и выше
Передача successorId
проекта, который не существует:
Я получаю та же ошибка, что и выше
Так как я могу это исправить? Я думаю, что мой дизайн сущности кажется неправильным. В основном это должно быть
- Один проект может иметь одного преемника
- Проект может стать преемником многих проектов
Было бы здорово, если бы кто-то мог помочь !
Обновление
Я тоже пробовал это
@OneToMany(() => Project, project => project.successorId, { nullable: true })
@Column()
public successorId?: string;
, но всякий раз, когда я хочу вызвать метод createProject
, я получение этой ошибки
QueryFailedError: нулевое значение в столбце "successorId" нарушает ненулевое ограничение
, и это
@OneToMany(() => Project, project => project.successorId, { nullable: true })
public successorId?: string;
, но тогда я ' я получаю эту ошибку
TypeError: relatedEntities.forEach не является функцией