我正在尝试复制过去构建的REST API,让我思考的一部分是我的一个表中是否包含对象数组。因此,例如,我有一个名为Profile的表,其中包含Experience and Education数组,这些数组严格位于Profile下,但也具有自己的字段,但没有自己的表。
当我在GraphQL中添加字段时,我碰到了这个问题,除了创建新类型,然后将它们与关系相关联之外,实际上并没有一个可靠的解决方案,然后让解析器或前端确保首先创建配置文件在体验/教育部分之前。我不确定这是正确的方法,还是有更好的方法。下面是我最终使用的代码的片段…查看管理页面,这里有为期望的Profile,Experience和Education创建的表。但是有没有办法只拥有Profile并完成类似的工作?还是使用GraphQL更像是一种生活方式?
type Profile {
id: ID! @id
handle: String!
company: String
website: String
location: String
status: String!
githubUsername: String
experience: [Experience!] @relation(link: INLINE)
education: [Education!] @relation(link: INLINE)
}
type Experience {
id: ID! @id
title: String!
company: String!
}
type Education {
id: ID! @id
title: String!
company: String!
}
答案 0 :(得分:1)
在Prisma中,您可以使用embedded types。您将删除@relation
指令,并将@embedded
指令添加到要嵌入的类型中:
type Profile {
id: ID! @id
handle: String!
company: String
website: String
location: String
status: String!
githubUsername: String
experience: [Experience!]
education: [Education!]
}
type Experience @embedded {
title: String!
company: String!
}
type Education @embedded {
title: String!
company: String!
}
但是,仅当您在数据库中使用MongoDB并且在使用嵌入式类型时文档中列出了一些特定限制时,这才可能实现。