graphql - AWS AppSync GraphQL 订阅在事件上返回空值

标签 graphql amazon-dynamodb aws-amplify publish-subscribe aws-appsync

刚接触 GraphQL、Amplify、AppSync 等,在尝试订阅 onUpdate 事件时遇到问题。

我将“API”库添加到我的 Amplify 项目中,并通过 API key 进行身份验证。我可以通过 Postman 成功发送突变(updatePurchaseOrder)请求,订阅监听器注册更新,但除了更新记录的 id 之外,返回的数据均为空。

screenshot in the AppSync console

这里的状态字段为空,我希望看到新的更新值。这是预期的行为吗?

定义的类型:

type PurchaseOrder @model @auth(rules: [ { allow: public } ] ){
  id: ID!
  name: String!
  description: String!
  user: String
  time: String
  file: String!
  status: String
}

从初始类型定义创建的架构突变和订阅尚未更改:

type PurchaseOrder {
    id: ID!
    name: String!
    description: String!
    user: String
    time: String
    file: String!
    status: String
    createdAt: AWSDateTime!
    updatedAt: AWSDateTime!
}


type Mutation {
    updatePurchaseOrder(input: UpdatePurchaseOrderInput!, condition: ModelPurchaseOrderConditionInput): PurchaseOrder
}



input UpdatePurchaseOrderInput {
    id: ID!
    name: String
    description: String
    user: String
    time: String
    file: String
    status: String
}


type Subscription {
    onUpdatePurchaseOrder: PurchaseOrder
        @aws_subscribe(mutations: ["updatePurchaseOrder"])
}

我尝试在浏览器中登录控制台并看到返回相同的空对象。我认为通过 AppSyncConsole 进行监听会更不容易出错,但我仍然看到相同的结果。

最佳答案

找出我出错的地方...我需要在 POST 查询中指定我想要的响应字段(例如:

mutation updatePurchaseOrder {
  updatePurchaseOrder(input: {status: "Pending", id: "53a98236-7b64-428c-93ea-2fae5228c0ef"}) {
    id
    **status**
  }

)

“status”原本不在查询响应参数中。订阅响应将仅包含查询本身中突变响应的一部分的字段。

关于graphql - AWS AppSync GraphQL 订阅在事件上返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74883217/

相关文章:

graphql - Falcor 和 GraphQL 有什么区别?

angular - 如何使用 angular 和 typescript 从 .graphql 文件加载查询

sql-server - Hot Chocolate GraphQL 批处理查询并将选择和过滤中间件应用于 EF SQL

c# - 在 .NET 中使用 DynamoDB 保留子类

javascript - 如何在 DynamoDB 表中插入多个项目并在超出最大容量时等待?

aws-amplify - 在 './aws-exports' 中找不到文件 './src'

graphql - 如何使用 schema.graphql 文件作为 typeDefs?

amazon-web-services - 将 DynamoDB 的 updateItem 与数值一起使用

amazon-web-services - AWS Amplify - AppSync 和多个 DynamoDB 表

reactjs - aws amplify react 部署抛出 list 语法错误