仅返回选定字段 React Native / GraphQL / Amplify
Posted
技术标签:
【中文标题】仅返回选定字段 React Native / GraphQL / Amplify【英文标题】:Return selected fields only React Native / GraphQL / Amplify 【发布时间】:2021-09-17 12:24:39 【问题描述】:我在 GraphQL 中有以下基本列表查询:
API.graphql(graphqlOperation(listSomething,filter: filter)).then(( data: something ) =>
// Returns the entire object
)
这将返回一个包含整个对象的数组,但正如我在多个 GraphQL 教程中看到的那样,出于显而易见的原因,我想利用仅返回/提取选择字段的实用程序。然而,关于 GraphQL + RN + Amplify 的信息并不多。那么我将如何重写此查询以仅返回属性 id
例如?还是我必须在 graphql
/ queries.js
文件中将其定义为解析器?我正在使用自动生成的查询,因此将您自己的查询添加到该文件中感觉有点像是一种反模式——如果我错了,请纠正我。
谢谢!
【问题讨论】:
【参考方案1】:我仍处于熟悉 AWS 的早期阶段,因此请持保留态度。
您自动生成的 queries.js
将包含一个 listSomething 查询,看起来像这样:
export const listTodos = /* GraphQL */ `
query ListTodos(
$filter: ModelTodoFilterInput
$limit: Int
$nextToken: String
)
listTodos(filter: $filter, limit: $limit, nextToken: $nextToken)
items
id
userID
name
description
createdAt
updatedAt
nextToken
`;
我创建了一个名为/src/customGraphQL
的新文件夹并创建了一个名为customListTodos.js
的文件。我在那里复制了自动生成的查询,更改了查询名称,并删除了我不需要的字段。
export const customListTodos = /* GraphQL */ `
query CustomListTodos(
$filter: ModelTodoFilterInput
$limit: Int
$nextToken: String
)
listTodos(filter: $filter, limit: $limit, nextToken: $nextToken)
items
name
description
nextToken
`;
我只更改了查询的名称,但将内部函数的名称保留为listTodos
,因此我正在运行该查询的自定义版本。如果将原始 API 推送到 AWS,您可以导入并使用自定义查询:
import customListTodos from './src/customGraphQL/customListTodos';
...
API.graphql(graphqlOperation(customListTodos ...
【讨论】:
以上是关于仅返回选定字段 React Native / GraphQL / Amplify的主要内容,如果未能解决你的问题,请参考以下文章
如何仅使用 React Native 中的 if 语句返回 useEffect
突出显示 React-Native FlatList 中的选定项目
使用 react-native-track-player 从 flatlist 播放选定的歌曲