首页 > 解决方案 > 接口或联合类型的 GraphQL 查询

问题描述

我们正在 React-Naitive 中实现一个应用程序,为此我们使用 aws 和 amplify。现在我们试图在 graphql 中获取接口或联合类型的所有元素。该接口正在调用 TrackingItem,实现此功能的类型称为 UserFood 和 UserSymptom。我们也尝试了这个,使用 union 和一个 TrackingItems 数组。但是在所有可能性中,我们都没有得到任何元素。返回值只是 null 并且我们期望 TrackingItems 的 ID,或者在 getAllTrackingItems 的情况下是来自 TrackingItem 的 ID 数组。

Graphql 模式:

type Query {
getAllTrackingItems: [TrackingItem]
# Retrieve tracking items
findTrackingItem(id: ID!): TrackingItem
# Search across all UnionTrackingItems
search(id: ID!): [UnionTrackingItems]
}

union UnionTrackingItems = UserSymptom | UserFood

interface TrackingItem {
  id: ID!
  userId: ID!
}

type UserFood implements TrackingItem @model {
  id: ID!
  userId : ID!
  type: String!
  foodId: ID!
  food : Food @connection(fields: ["foodId"]) 
}

type UserSymptom implements TrackingItem @model {
  id: ID!
  userId : ID!
  type: String!
  symptomId: ID!
  symptom : Symptom @connection(fields: ["symptomId"])
  strenght: Int
}
  

我们在放大模拟后测试的查询:

query MyQuery {
  getAllTrackingItems {
    id
  }
  findTrackingItem(id: 1) {
    id
  }
  search(id: 1) {
    ... on UserFood {
      id
    }
  }
  getUserFood(id: 1) {
    id
  }
}

我们的结果:

{
  "data": {
    "getAllTrackingItems": null,
    "findTrackingItem": null,
    "search": null,
    "getUserFood": {
      "id": "1"
    }
  }
}

任何人都可以帮忙吗?谢谢!

标签: databasegraphqlnosqlbackendaws-amplify

解决方案


推荐阅读