可以从python lambda用graphqlUnion
响应吗?怎么做It seems possible但我不能让它越过界限
我包含了一个__typename
属性,但大多数时候我都会遇到以下错误:
{'errorType': 'BadRequestException',
'message': "Could not determine the exact type of MealMix. Missing __typename key on value.'"}
MealMix
是我的联合,模式如下所示:
type Meal { name: String }
type OtherMeal { name: String }
union MealMix = Meal | OtherMeal
type Query {
GetMealMix(identity_id: ID!, date: AWSDate!): [MealMix]
}
查询是:
query test_query {
GetMealMix(identity_id: "this", date: "2020-11-20") {
... on Meal {name}
... on OtherMeal {name}
}
}
我从lambda返回:
return [{' __typename': 'Meal',
'name': 'Kiwifruit, Zespri Gold, Raw'},
{' __typename': 'OtherMeal',
'name': 'The meal at the end of the universe'}]
响应模板是默认的:$util.toJson($ctx.result)
我的谷歌搜索似乎表明我只需要包含__typename
属性,但是没有明确的Python示例可以做到这一点。我首先要问的是,我是不是在鞭打一匹死马(这意味着这没有实现,也永远不会起作用),第二,如果它真的起作用,具体如何
你可以这样写,如下所示。 它应该对你有用
您可以从以下URL获取参考: Interfaces and unions in GraphQL
问题
一方面,我发现了一些例子,其中
__typename
(如您所述)可能需要包含在查询中。 另一方面,这也很有趣,因为AWS文档没有提到在查询中包含__typename
,但是提到了接口的使用,所以我想知道这是否是让事情正常运行的关键,所有类型都扩展相同的接口解决方案
选择1
尝试将
__typename
包含在Meal
和OtherMeal
片段中(您提到在查询中使用__typename
,但不确定放在哪里)示例
选择2
union中包含的所有类型都使用相同的接口,如您共享的文档中标题为“类型解析示例”的部分所示
示例
注释
硬编码响应
您返回一个硬编码的响应,但我不确定是否需要额外的元数据来处理AWS Lambda上的GQL响应。尝试记录响应以确定是否包含
__typename
。如果不包含^ {CD1>},请考虑在ID中添加Type名称,并使用您共享的AWS文档中推荐的转换:身份识别码
此外,“identity_id”参数中的“this”可能由于GraphQL处理id类型的方式而导致缓存问题(请参见:https://graphql.org/learn/schema/#scalar-types)
参考资料
AWS上的GraphQL_u_类型名查询示例:https://github.com/LambdaSharp/AppSync-Challenge GraphQL标量类型:https://graphql.org/learn/schema/#scalar-types
相关问题 更多 >
编程相关推荐