【发布时间】:2020-05-04 05:54:27
【问题描述】:
我正在使用 typeORM 来声明数据模型。
看起来像这样:
@ObjectType()
@Entity("ParentObject")
@Index(['id'], { unique: true })
export class ParentObject {
@Field({nullable: true})
@PrimaryGeneratedColumn("uuid")
uuid: string;
@Field(type => [NestedObject], {nullable: true})
@OneToMany(type => NestedObject, nestedObject=> nestedObject.parentObject)
nestedObjects: Promise<NestedObject[]>;
@Column({
nullable: true,
type: 'timestamp'
})
@Field(() => GraphQLISODateTime, {nullable: true})
@CreateDateColumn()
createdDate: Date;
}
NestedObject 数组包含与 ParentObject 一起拉出的对象。它们是一个 Promise,因为 TypeORM 进行了一个异步调用以将它们从另一个数据库表中提取出来,由 ID 引用。
当我对服务器进行 GraphQL 调用时,它会以数组的形式返回 ParentObject,我可以使用如下代码遍历每个对象:
let data = await this.service.getParentObject(first, offset);
data = data.map((parentObject: ParentObject) => {
return ParentObject.someFunction(parentObject);
});
return data;
我可以修改值等。
但我的问题是能够遍历 ParentObject 中的nestedObject。鉴于它们被声明为Promise<NestedObject[]>,它不是一个标准的数组,并且不包含诸如map或push之类的函数。
所以我会使用这样的代码:
let data = await this.service.getParentObject(first, offset);
data = data.map((parentObject: ParentObject) => {
let nestedObjects = parentObject.nestedObjects;
nestedObjects.map(nestedObject=> {
// some operations
})
return ParentObject.someFunction(parentObject);
});
return data;
我收到 Typescript 错误:
Property 'map' does not exist on type 'Promise<NestedObject[]>'
这让我无法遍历这个嵌套的对象数组,因为它不是一个简单的数组,而是一个嵌套的对象数组的承诺。我不确定如何处理这个问题。
任何帮助将不胜感激,谢谢。
【问题讨论】:
-
我对打字稿了解不多,但是
Array.from是一个选项吗?这是将类数组结构转换为数组的常用方法,可让您访问所有数组方法,如mapforeach等
标签: javascript typescript promise graphql typeorm