You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Amplify GraphQL AppSync列表查询过滤已删除条目及报错处理

错误原因

你遇到的报错是因为AppSync的GraphQL校验规则不支持给ModelFrameFilterInput这类复杂输入对象类型的变量直接在查询定义中设置默认值,你写的$filter: ModelFrameFilterInput = {_deleted: {ne: true}}不符合语法规范。

解决方案

可以根据你的使用场景二选一:

方案1:直接在查询中写死过滤规则

如果每次查询listFrames都需要过滤已删除条目,不需要动态修改过滤条件,可以直接把filter参数写死在查询语句中:

query MyQuery {
  listFrames(filter: {_deleted: {ne: true}}) {
    items {
      _deleted
      name
      id
    }
  }
}

方案2:保留变量,调用时传入过滤参数

如果需要支持自定义其他过滤条件,保留变量定义,去掉默认值,在调用查询的时候传入filter参数即可:

  1. 查询语句:
query MyQuery($filter: ModelFrameFilterInput) {
  listFrames(filter: $filter) {
    items {
      _deleted
      name
      id
    }
  }
}
  1. 调用时传入的变量示例:
{
  "filter": {
    "_deleted": {
      "ne": true
    }
  }
}

如果是在Amplify JS客户端中调用,示例代码如下:

import { API } from 'aws-amplify'
import { MyQuery } from './graphql/queries'

// 调用查询
const result = await API.graphql({
  query: MyQuery,
  variables: {
    filter: { _deleted: { ne: true } }
  }
})
const frameList = result.data.listFrames.items

注意事项

  • 上述方案生效的前提是你的AppSync API开启了冲突检测与数据版本控制,才会存在系统自带的_deleted字段
  • 如果你开启了Amplify DataStore,也可以直接在DataStore的查询方法中添加同样的过滤条件,效果一致

内容的提问来源于stack exchange,提问作者BitFunny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:39:06