私はgraphqlサーバーを構築するためにdjangoグラフェンを使用しています.RESTfull APIを使用してデータを取得します.次のスキーマに従ってください:
class DeviceType(graphene.ObjectType):
id = graphene.ID()
reference = graphene.String()
serial = graphene.Float()
class InstallationType(graphene.ObjectType):
id = graphene.ID()
company = graphene.Int()
device = graphene.ID()
class AllDataType(graphene.ObjectType):
device = graphene.Field(DeviceType)
installation = graphene.Field(InstallationType)
class Query(graphene.ObjectType):
installation = graphene.Field(
InstallationType,
device_id=graphene.Int(required=True)
)
all = graphene.Field(
AllDataType,
serial=graphene.Float(required=True)
)
def resolve_installation(self, info, device_id):
response = api_call('installations/?device=%s' % device_id)['results'][0]
return json2obj(json.dumps(response))
def resolve_all(self, info, serial):
response = api_call('devices/?serial=%s' % serial)['results'][0]
return json2obj(json.dumps(response))
私がする必要があるクエリは次のようなものです:
query {
all(serial:201002000856){
device{
id
serial
reference
}
installation{
company
device
}
}
}
AllDataType
したがって、私の問題は、 で説明されているように、この 2 つのresolve_installation
タイプdevice id
との関係をどのように作成するかresolve_all
です。
インストールを解決するには、リゾルバーからdevice id
返されたが必要です。resolve_all
どうすればこれを達成できますか?