typescript - 如何在 typeorm 中创建关系的正确方法是什么?
问题描述
我有两个实体:
@Entity({ name: 'provider' })
export class ProviderEntity extends GenericEntity {
@Column()
name: string;
@Column()
description: string;
@OneToMany(() => ItemEntity, item => item.provider)
items: Promise<ItemEntity[]>;
}
@Entity({ name: 'item' })
export class ItemEntity extends GenericEntity {
@Column()
content: string;
@ManyToOne(() => ProviderEntity, provider => provider.items)
provider: Promise<ProviderEntity>;
}
Provider
对象已经存在于数据库中,我想item
用 realtion 创建到provider
.
我的代码是:
const content = 'mockContent';
const providerId = '5be045b1-ef49-4818-b69f-a45c0b7e53';
const item = new ItemEntity();
item.content = content;
item.provider = providerId; // ERROR
await this.repository.save(item);
return item;
它工作的代码,但我得到一个打字稿错误Type 'string' is not assignable to type 'Promise<ProviderEntity>'.
。如何插入这个的正确方法是什么?
通用实体类仅包含 id
@PrimaryGeneratedColumn('uuid')
id: string;
解决方案
我相信通过关系 ID 关联事物,而不是完整的关系对象,您需要将关系 ID 添加到您的界面:
@ManyToOne(() => ProviderEntity, provider => provider.items)
provider: Promise<ProviderEntity>;
@Column()
providerId: string
providerId
是 TypeORM 用于在内部跟踪关系的列,您只需将其公开即可。
然后您只需设置该属性:
const item = new ItemEntity();
item.content = content;
item.providerId = providerId; // set providerId column directly.
await this.repository.save(item);
推荐阅读
- node.js - 如何检索 SharePoint 网页代码(html)或抓取共享点网页?
- php - 嘲笑php测试中的碳对象
- ecmascript-6 - 为什么 !在graphql中的字符串之后?
- reactjs - React redux 正确状态更新
- parallel-processing - 如何在 Julia 中同时写入数组的多个索引?
- for-loop - Makefile 从 for 循环更新全局变量
- reactjs - Snowpack & React:热重装/刷新不起作用
- c# - 与解决方案文件夹结构VS2019相同的文件夹结构
- ruby-on-rails - Gem 是否应该假设加载了其他 gem?
- ios - Xcode 不上传构建