【问题标题】:AppSync GraphQL Mocking Resolver Map Not Generating Unique ItemsAppSync GraphQL 模拟解析器映射未生成唯一项目
【发布时间】: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 一样是唯一的

标签: javascript mocking graphql aws-appsync resolver


【解决方案1】:

the docs 所示,如果您想在每次触发字段的解析器时生成不同的值,则模拟解析器应该是一个函数,而不是一个值。所以而不是:

Model: () => ({
  id: casual.uuid,
  name: casual.title,
}),

你应该这样做:

Model: () => ({
  id: () => casual.uuid,
  name: () => casual.title,
}),

这会导致每次解析字段时都会调用 idname

【讨论】:

  • 对不起,如果我错过了,但在文档中没有明确说明:当不定义模拟时,addMocksToSchema 的默认行为是模拟一个 Foo 数组以包含两个相同的 Foo对象?
猜你喜欢
  • 2017-07-02
  • 2022-01-23
  • 2020-05-29
  • 2019-10-14
  • 2019-09-01
  • 2021-12-12
  • 2018-10-11
  • 2020-10-19
  • 2017-07-18
相关资源
最近更新 更多