AppSync控制台中的GraphQL查询未返回某些DynamoDB记录

时间:2019-08-20 15:11:53

标签: amazon-web-services amazon-dynamodb graphql aws-appsync

我正在学习如何将AppSync与ReactNative一起使用。我创建了一个简单的React-Native应用程序,该应用程序可以扫描条形码,并将其转换为填写表格的数字。然后,GraphQL使用此条形码以及名称和描述在基础数据源(在本例中为DynamoDB)中创建条目。

我使用AWS-Amplify CLI创建了端点及其链接到的数据库。这是我的“项目”的基本架构(我将在末尾发布完整架构):

type Item {
    id: ID!
    barcode: String!
    name: String!
    description: String
}

如果仅使用控制台,则可以导航至“ AWS Appsync-> BarcodeAPI-local->查询”并使用查询:

query searchItems {
  listItems(filter:{
    barcode:{
      eq: "8000070016644"
    }
  }) {
    items{
      id
      barcode
      name
      description
    }
  }
}

这向我返回了一个包含单个项目的项目数组。

{
  "data": {
    "listItems": {
      "items": [
        {
          "id": "a946b71c-5183-403d-a8b9-9e9ee341a6a7",
          "barcode": "8000070016644",
          "name": "item name",
          "description": "item description"
        }
      ]
    }
  }
}

但是,我遇到的问题是,如果我转到“ DynamoDB控制台->表-> Item-db name-local”,请单击“项目”,然后“扫描”通过条形码过滤的表以获取“ 8000070016644” DynamoDB中具有该条形码的多个条目。

然后,我使用了在条形码上过滤的DynamoDB扫描功能,并检索了未在AppSync控制台->查询部分中显示的ID,并对此进行了查询。它返回0个项目。但是我知道它在那里。

如果我返回搜索“ 8000070016644”。正如我所说,这将返回一个项目。如果我使用该ID并在DynamoDB中对该ID进行过滤,然后将条目编辑为新的唯一属性。然后,我可以返回Appsync->查询并对该ID进行搜索。现在,返回的单个项目具有新的编辑数据。

我还尝试了使用Mulesoft连接连接到Dynamo DB并以此方式读取DB。我可以在那里读取所有数据并进行访问。

所以,我相信我的问题是与AppSync和/或GraphQL有关,我犯了一个错误。您能提供任何建议吗?

其余的模式是:

input CreateItemInput {
    id: ID
    barcode: String!
    name: String!
    description: String
}

input DeleteItemInput {
    id: ID
}

type Item {
    id: ID!
    barcode: String!
    name: String!
    description: String
}

input ModelBooleanFilterInput {
    ne: Boolean
    eq: Boolean
}

input ModelFloatFilterInput {
    ne: Float
    eq: Float
    le: Float
    lt: Float
    ge: Float
    gt: Float
    contains: Float
    notContains: Float
    between: [Float]
}

input ModelIDFilterInput {
    ne: ID
    eq: ID
    le: ID
    lt: ID
    ge: ID
    gt: ID
    contains: ID
    notContains: ID
    between: [ID]
    beginsWith: ID
}

input ModelIntFilterInput {
    ne: Int
    eq: Int
    le: Int
    lt: Int
    ge: Int
    gt: Int
    contains: Int
    notContains: Int
    between: [Int]
}

type ModelItemConnection {
    items: [Item]
    nextToken: String
}

input ModelItemFilterInput {
    id: ModelIDFilterInput
    barcode: ModelStringFilterInput
    name: ModelStringFilterInput
    description: ModelStringFilterInput
    and: [ModelItemFilterInput]
    or: [ModelItemFilterInput]
    not: ModelItemFilterInput
}

enum ModelSortDirection {
    ASC
    DESC
}

input ModelStringFilterInput {
    ne: String
    eq: String
    le: String
    lt: String
    ge: String
    gt: String
    contains: String
    notContains: String
    between: [String]
    beginsWith: String
}

type Mutation {
    createItem(input: CreateItemInput!): Item
    updateItem(input: UpdateItemInput!): Item
    deleteItem(input: DeleteItemInput!): Item
}

type Query {
    getItem(id: ID!): Item
    listItems(filter: ModelItemFilterInput, limit: Int, nextToken: String): ModelItemConnection
}

type Subscription {
    onCreateItem: Item
        @aws_subscribe(mutations: ["createItem"])
    onUpdateItem: Item
        @aws_subscribe(mutations: ["updateItem"])
    onDeleteItem: Item
        @aws_subscribe(mutations: ["deleteItem"])
}

input UpdateItemInput {
    id: ID!
    barcode: String
    name: String
    description: String
}

0 个答案:

没有答案