AppSync GraphQL 模拟解析器映射未生成唯一项目
Posted
技术标签:
【中文标题】AppSync GraphQL 模拟解析器映射未生成唯一项目【英文标题】:AppSync GraphQL Mocking Resolver Map Not Generating Unique Items 【发布时间】:2019-05-21 16:55:53 【问题描述】:我的模拟不是为每个项目生成唯一数据,而是每个项目都具有相同的字段值。
选项 1:(理想的方法,错误的结果)
AppSync 架构包含[Model]
的items
字段,如果我将Model
解析器单独放置,则items
列表中的所有Model
具有相同的值。
const mocks =
ModelModelConnection: () => (
items: () => new MockList(5),
),
Model: () => (
id: casual.uuid,
name: casual.title,
),
;
导致...
选项 2:(替代方法,正确结果)
const mocks =
ModelModelConnection: () => (
items: () => new MockList(5, () => (
id: casual.uuid,
name: casual.title,
)),
),
;
我想使用选项 1,但我似乎无法获得要模拟的独特项目。一直在为这个挠头。提前致谢!
【问题讨论】:
目前还不清楚您到底在问什么或您想要实现什么。究竟是什么问题?预期的结果是什么? @Larce 选项 1 在name
字段中生成所有相同的数据,而选项 2 在 name
字段中生成唯一数据。我想使用选项 1 构建树,但数据需要像选项 2 一样是唯一的
【参考方案1】:
如the docs 所示,如果您想在每次触发字段的解析器时生成不同的值,则模拟解析器应该是一个函数,而不是一个值。所以而不是:
Model: () => (
id: casual.uuid,
name: casual.title,
),
你应该这样做:
Model: () => (
id: () => casual.uuid,
name: () => casual.title,
),
这会导致每次解析字段时都会调用 id
和 name
。
【讨论】:
对不起,如果我错过了,但在文档中没有明确说明:当不定义模拟时,addMocksToSchema
的默认行为是模拟一个 Foo 数组以包含两个相同的 Foo对象?以上是关于AppSync GraphQL 模拟解析器映射未生成唯一项目的主要内容,如果未能解决你的问题,请参考以下文章
Dynamo DB 中的 AWS AppSync 简单 graphql 解析器无法正常工作,这让我发疯