从 AWS Amplify Graphql 过滤数据 API

Filtering data from AWS Amplify Graphql API

Graphql 架构:

type Media @model
{
  id: ID!
  title: String
  type: String
}

示例数据:

{
      id: "some ID",
      title: "sample media1",
      type: "image/png",
}

{
      id: "some ID",
      title: "sample media2",
      type: "video/mp4",
}

我只想获取其类型包含字符串“image”的数据。

type: "image/mp4"

我知道我可以通过这种方式根据标题获取一些数据。

import { API, graphqlOperation } from "aws-amplify"
import * as queries from "@src/graphql/queries"
...
let title = "sample media1"
const medias = await API.graphql(
                 graphqlOperation(queries.listMedias, { filter: { title: { eq: title } } })
               )

是否有任何类似的方法来获取其属性之一包含特定值的数据?

“包含”而不是“完全相同”

如 AWS Amplify documentation you can use corresponding DynamoDB queries 中所述。其中一个查询是包含,但它取决于您正在过滤的字段类型。 DynamoDB 支持的所有运算符列表:

  • 情商
  • NE
  • LT
  • GE
  • GT
  • NOT_NULL
  • 包含
  • NOT_CONTAINS
  • BEGINS_WITH
  • 介于

所以在你的例子中:

import { API, graphqlOperation } from "aws-amplify"
import * as queries from "@src/graphql/queries"
...
let title = "sample media1"
const medias = await API.graphql(
                 graphqlOperation(queries.listMedias, { filter: { title: { contains: title } } })
               )