#nestjs #typeorm
Вопрос:
Я создаю серверное приложение в NodeJS и TypeORM.
У меня есть эти таблицы:
users
--------------------------------------------
id | firstName | lastName
--------------------------------------------
1 | Lorem | Ipsum
companies
------------------------------------------------------------
id | name
------------------------------------------------------------
1 | Lorem
transfers
------------------------------------------------------------
id | points | userId | companyId
------------------------------------------------------------
1 | 10 | 1 | 1
Компания
@Entity({ name: 'companies' })
export class CompanyEntity extends BaseEntity {
@Column()
name: string;
@OneToMany(() => TransferEntity, (transfer) => transfer.company)
transfers: TransferEntity[];
}
ТрансферТность
@Entity({ name: 'transfers' })
export class TransferEntity extends BaseEntity {
@Exclude()
@ManyToOne(() => CompanyEntity, (company) => company.transfers)
company: CompanyEntity;
@Column()
points: number;
@Column()
userId: number;
}
Определить взаимосвязь между Переводами и пользователями для меня не вариант.
Я хотел бы получить все переводы компании по ее идентификатору, а также присоединиться к userID
колонке с реальным пользователем с его данными в users
таблице.
async findAllTransfersByCompanyId(id: number): Promise<TransferEntity[]> {
// 1. Find the company by its ID
const company = await this.companyRepository.findOne(id, {
// 2. Get all the transfers
relations: ['transfers'],
// 3. Join the userId of a transfer with the user data in the 'users' table
join: {
alias: 'users',
innerJoin: {
userId: 'users.id',
},
},
});
return company.transfers;
}
Связь с идентификатором пути к свойству в сущности не найдена.
Я не очень хорошо понимаю логику объединения, может быть, есть самый простой способ сделать это.
Моя цель состоит в том, чтобы объединить таблицу userID
переводов с таблицей пользователей, чтобы вернуть также ее данные в ответе.
Ответ №1:
Вам нужно определить отношения между transfers
и users
точно так же, как вы определили между transfers
и company
@Entity({ name: 'transfers' })
export class TransferEntity extends BaseEntity {
@Exclude()
@ManyToOne(() => CompanyEntity, (company) => company.transfers)
company: CompanyEntity;
@Column()
points: number;
@ManyToOne((type) => User)
user: User;
}
Комментарии:
1. Определить, что отношения для меня не вариант, вот почему я этого не сделал. Я хотел бы сделать отношения по-другому.