运行“放大模拟”会重置对查询、突变的更改

Posted

技术标签:

【中文标题】运行“放大模拟”会重置对查询、突变的更改【英文标题】:Running 'amplify mock' resets the changes to queries, mutations 【发布时间】:2020-12-31 04:39:21 【问题描述】:

场景:

    我按照 AWS Amplify 文档here 上给出的步骤创建了一个反应项目

    我对问题Do you want to generate/update all possible GraphQL operations queries, mutations and subscriptions?

    的回答

    在本地一切正常,我使用amplify mock进行了测试

    项目快完成时,我使用amplify push推送到云端

    我对以下(自动生成的)文件中的默认 listgetupdate 函数进行了更改:

src/graphql/queries src/graphql/mutations
    应用按预期运行 问题来了在我之前已经完成amplify push 之后(第 6 步)我做了“放大模拟”(第 6 步) 我对@9​​87654331@ 和src/graphql/mutations 文件所做的所有更改都在运行amplify mock 时被系统覆盖 我能够一次又一次地重现这种情况......每次我运行 amplify mock 时,它都会重置 src/graphql/queriessrc/graphql/mutations 文件。

我的问题

如何避免这种情况发生? 我可以创建新文件而不是更改src/graphql/queriessrc/graphql/mutations 文件吗? 或者有没有更好的解决方案或我缺少的步骤?

我的 package.json 中的相关依赖项:

  "dependencies": 
    "@aws-amplify/auth": "^3.4.1",
    "@aws-amplify/cli": "^4.28.2",
    "@aws-amplify/ui-react": "^0.2.17",
    "aws-amplify": "^3.1.0",
    "react": "^16.13.1",
    "react-dom": "^16.13.1",
    "react-redux": "^7.2.1",
    "react-router-dom": "^5.2.0",
    "react-scripts": "3.4.3",
    "redux": "^4.0.5"
  ,

【问题讨论】:

【参考方案1】:

编辑:我现在自己也遇到了这种情况,并且有一个适合我的解决方案。

我看到的最佳选择是在 src/graphql 内创建您自己的文件以进行自定义查询/突变。例如,我想创建返回的数据少于自动生成的查询的查询。所以,我创建了src/graphql/queriesCustom.ts(我使用的是打字稿,因此是.ts)。在里面,我复制了我想要的查询,更新了变量名和操作名。运行 pushcodegen 时,它会按预期更新自动生成的文件,但不会处理我的自定义文件。

这是一个例子。

src/graphql/queries.ts 中有一个getUser 查询,如下所示:

export const getUser = /* GraphQL */ `
  query GetUser($id: ID!) 
    getUser(id: $id) 
      id
      type
      username
      email
      avatar
      name
      bio
      categories
      createdAt
      updatedAt
    
  
`;

我想对我的应用程序的一部分进行更简单的查询。所以,我创建了src/graphql/queriesCustom.ts,复制了查询,并进行了适当的更新:

export const getUserSimple = /* GraphQL */ `
  query GetUserSimple($id: ID!) 
    getUser(id: $id) 
      id
      username
      avatar
      name
    
  
`;

请注意,您只是更改了操作名称,而不是查询名称。所以query GetUser 改为query GetUserSimplegetUser 的实际查询名称与在 appsync 中映射到解析器的名称相同。

【讨论】:

Schema.graphql 包含模型(模式)...我想要自己的突变/查询(在src/graphql 中)并编写它们并且它们起作用了...烦恼是让它们恢复到默认每个amplify mock 您是否尝试将它们放入 schema.graphql 文件中?突变/查询文件是自动生成的。我认为另一种选择是创建您自己的文件,例如 customMutations 来存储您的文件。

以上是关于运行“放大模拟”会重置对查询、突变的更改的主要内容,如果未能解决你的问题,请参考以下文章

通过特定查询或突变重置缓存

根据记录数据更改重置行号

在新页面上重置“运行总计字段”

媒体查询断点上的 CSS 重置值(调整窗口大小或方向更改)

更改图像时 JCROP 重置纵横比

如何重置 Apollo 客户端的 useMutation 钩子