AWS AppSync:查询按 id 找到 getObject 但没有按 id 过滤的 listObjects
AWS AppSync: query finds getObject by id but no listObjects filtered by id
我正在为我的 React Native Expo 项目使用 AWS AppSync。
我正在 运行 设置一个功能,其中包含标签和帖子。在创建标签之前,我使用以下方法检查标签是否已存在:
await API.graphql(graphqlOperation(
listTags, {filter: {tagName: {eq: "thetagnameiamcheckingfor"}}}))
我看到的行为是,即使在控制台中,某些存在的标记也不是来自此查询的 returning。当根本没有应用过滤器时,标签甚至不会出现在列表中。但是,当我 运行 getTag
使用相同的 id 时,我 return 使用了正确的标签。这种行为似乎是随机的 - listTags
上的大多数标签 return,但少数 select 不是。使用 getTag, {id: tagID}
找到所有标签
我正在将所有字符串转换为小写并删除空格,所以我知道这不是问题所在。
标签明明存在,为什么在 运行 查询 listTags
时 return 没有?
DynamoDB 一次最多读取 1MB 的数据。 DynamoDB 在读取最多 1MB 的数据后应用过滤器。 DynamoDB 在应用任何限制后应用过滤器。
如果您尝试列出和过滤,而您要查找的项目不在读取的前 1MB 数据中,则不会返回任何数据。如果您尝试使用限制列出和过滤,而您要查找的项目不在第一个 $Limit 项目中,则不会返回任何数据。
如果您想按特定值查找项目,而该值不是 table 键,您应该创建一个索引并在该索引上查询。
我正在为我的 React Native Expo 项目使用 AWS AppSync。
我正在 运行 设置一个功能,其中包含标签和帖子。在创建标签之前,我使用以下方法检查标签是否已存在:
await API.graphql(graphqlOperation(
listTags, {filter: {tagName: {eq: "thetagnameiamcheckingfor"}}}))
我看到的行为是,即使在控制台中,某些存在的标记也不是来自此查询的 returning。当根本没有应用过滤器时,标签甚至不会出现在列表中。但是,当我 运行 getTag
使用相同的 id 时,我 return 使用了正确的标签。这种行为似乎是随机的 - listTags
上的大多数标签 return,但少数 select 不是。使用 getTag, {id: tagID}
我正在将所有字符串转换为小写并删除空格,所以我知道这不是问题所在。
标签明明存在,为什么在 运行 查询 listTags
时 return 没有?
DynamoDB 一次最多读取 1MB 的数据。 DynamoDB 在读取最多 1MB 的数据后应用过滤器。 DynamoDB 在应用任何限制后应用过滤器。
如果您尝试列出和过滤,而您要查找的项目不在读取的前 1MB 数据中,则不会返回任何数据。如果您尝试使用限制列出和过滤,而您要查找的项目不在第一个 $Limit 项目中,则不会返回任何数据。
如果您想按特定值查找项目,而该值不是 table 键,您应该创建一个索引并在该索引上查询。