通过 ID 以外的字段查询缓存?
Querying cache by fields other than ID?
我正在将 GraphQL 集成到我的应用程序中,并试图弄清楚这种情况是否可行。
我有一个记录类型的架构和一个 returns 我的服务记录列表的查询。架构类似于:
type Query {
records(someQueryParam: String!): [Record]!
}
type Record {
id: String!
otherId: String!
<other fields here>
}
我的应用程序中有一些地方需要使用 otherId
值访问 Record
(因为我只能访问这些)。目前,我通过 otherId
到 id
值的映射来实现这一点,这些值在下载所有 Record
之后填充。我使用映射从 otherId
到 id
,然后使用 id
值索引到 Record
对象的集合中,以避免遍历整个对象。 (在我开始使用 Apollo GQL 之前,这个集合曾经使用单独的 REST 调用填充。)
如果可能的话,我想删除我对这个映射的依赖。由于 Record
加载后都在 Apollo 缓存中,我只想使用 otherId
值查询缓存中有问题的 Record
。我的服务目前没有那种查找,所以我没有可以并行缓存的现有查询。 (即没有 getIdFromOtherId
)。
tl;dr:我可以使用对象的 id
以外的东西查询我的 Apollo 缓存吗?
您不能通过 otherId
查询缓存,原因与您不想搜索记录集以查找匹配项目的原因相同——id 是项目键的一部分,并且没有密钥 Apollo 无法直接访问该项目。 Apollo 的默认缓存是一个 key-value store,而不是一个你可以随意查询的数据库。
可能有必要在您的数据源中构建一个查询,以允许在 otherId
和 id
之间进行映射,显然,在整个记录集中搜索您的项目效率会非常低.
我正在将 GraphQL 集成到我的应用程序中,并试图弄清楚这种情况是否可行。
我有一个记录类型的架构和一个 returns 我的服务记录列表的查询。架构类似于:
type Query {
records(someQueryParam: String!): [Record]!
}
type Record {
id: String!
otherId: String!
<other fields here>
}
我的应用程序中有一些地方需要使用 otherId
值访问 Record
(因为我只能访问这些)。目前,我通过 otherId
到 id
值的映射来实现这一点,这些值在下载所有 Record
之后填充。我使用映射从 otherId
到 id
,然后使用 id
值索引到 Record
对象的集合中,以避免遍历整个对象。 (在我开始使用 Apollo GQL 之前,这个集合曾经使用单独的 REST 调用填充。)
如果可能的话,我想删除我对这个映射的依赖。由于 Record
加载后都在 Apollo 缓存中,我只想使用 otherId
值查询缓存中有问题的 Record
。我的服务目前没有那种查找,所以我没有可以并行缓存的现有查询。 (即没有 getIdFromOtherId
)。
tl;dr:我可以使用对象的 id
以外的东西查询我的 Apollo 缓存吗?
您不能通过 otherId
查询缓存,原因与您不想搜索记录集以查找匹配项目的原因相同——id 是项目键的一部分,并且没有密钥 Apollo 无法直接访问该项目。 Apollo 的默认缓存是一个 key-value store,而不是一个你可以随意查询的数据库。
可能有必要在您的数据源中构建一个查询,以允许在 otherId
和 id
之间进行映射,显然,在整个记录集中搜索您的项目效率会非常低.