AppSync GraphQL 模拟解析器映射不生成唯一项目

Web*_*ber 1 javascript mocking resolver graphql aws-appsync

我的模拟不会为每个项目生成唯一的数据,而是每个项目都具有相同的字段值。

选项1:(理想的方法,错误的结果)

AppSync 架构包含一个items字段[Model],如果我将Model解析器单独放置,则列表Model中的所有值都items具有相同的值。

const mocks = {
  ModelModelConnection: () => ({
    items: () => new MockList(5),
  }),
  Model: () => ({
    id: casual.uuid,
    name: casual.title,
  }),
};
Run Code Online (Sandbox Code Playgroud)

结果是... 结果


选项2:(替代方法,正确结果)

const mocks = {
  ModelModelConnection: () => ({
    items: () => new MockList(5, () => ({
      id: casual.uuid,
      name: casual.title,
    })),
  }),
};
Run Code Online (Sandbox Code Playgroud)

结果


我想选择选项 1,但我似乎无法让独特的项目被嘲笑。我一直在为这个摸不着头脑。提前致谢!

Dan*_*den 5

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

Model: () => ({
  id: casual.uuid,
  name: casual.title,
}),
Run Code Online (Sandbox Code Playgroud)

你应该做:

Model: () => ({
  id: () => casual.uuid,
  name: () => casual.title,
}),
Run Code Online (Sandbox Code Playgroud)

这会导致每次解析该字段时调用id和。name