首页 > 解决方案 > 在解析器之间共享数据

问题描述

任何人都可以帮助我在graphql中的不同解析器之间共享数据的方式。一种方法是使用上下文,但在网络的许多地方都提到避免改变上下文。

即例如我有一个架构如下

 type Person{
    ID:Int
    Name: String
    Age: String
    address: Address
}

type Address{
    
    address-line1: String   
    address-line2: String   
    City: String    
    Country: String
    Pincode:String

}


type Query{
    
    GetpersonbyID(id: int):Person
    GetPersons: [Person]

}

现在,例如,要从根解析器向解析器传递一些附加信息,目前我正在使用上下文。这是正确的方法还是有更好的方法来实现这一点。

标签: javascriptnode.jsgraphqlapollo-server

解决方案


您可以在根解析器中返回必要的信息:

const resolvers = {
  Query: {
    getPersonById: (root, args) => {
      const person = await getPerson(args.id)
      person.address = {
        foo: 'bar',
      }
      return person
    },
  },
  Address: {
    addressLine1: (address) => {
      console.log(address) // { foo: 'bar' }
    },
  },
}

推荐阅读