我现在正在学习如何使用GraphQL,但我不确定我做对的事情是什么,数据库表与GraphGL模式之间的关系。
我有一个包含两个表的数据库:Person和Dog。 人员具有“ id”,“ firstName”和“ lastName”列。 狗具有“ id”,“ name”和“ ownerId”列。 显然,如果我想让一条狗属于某个人,则将其“ id”保存在“ ownerId”中,而不是将整个“人”保存在“所有者”列中。
现在我有一个GraphQL服务器,我希望在这里能够获得所有的狗,所有的人并获得狗的主人/得到一个人的狗。
我想要的解析器是:
Query: {
dogs: () => dogs,
persons: () => persons
},
Dog: {
owner: dog => find(persons, { id: dog.ownerId })
},
Person: {
dogs: person => filter(dogs, { ownerId: person.id })
}
让我们将两个人和狗的列表加载到静态变量中。
我的模式是:
type Dog {
id: Int!
name: String!
ownerId: Int
}
type Person {
id: Int!
firstName: String!
lastName: String!
}
extend type Query {
dogs: [Dog]!
persons: [Person!]!
}
但是,现在我收到一条错误消息,说“ Dog.owner”的解析器在模式中的“ Dog”类型中没有匹配的字段。
我的问题是:我应该
即使数据库中没有这样的列,“狗”类型的owner: Person
字段和“人”类型的dogs: [Dog]
字段也可以?
还是有其他方法可以做到这一点?