GraphQL模式类型和MySQL表之间有什么关系?

时间:2019-07-03 10:23:27

标签: javascript mysql graphql

我现在正在学习如何使用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]字段也可以? 还是有其他方法可以做到这一点?

0 个答案:

没有答案