[英]Can I use the graphql pagination cursor as an unique indentifier?
主要问题基本上在主题中,但我想稍微详细地描述一下问题。
我正在研究基于游标的 Apollo graphql 分页,并且在我的缓存中,我应该定义合并函数来组合现有数据和传入数据。 每个数据对象都有通用的 graphql 分页结构:
{
"totalCount": ...,
"pageInfo": {
"startCursor": "...",
"endCursor": "...",
"hasNextPage": true,
"__typename": "..."
},
"edges": [...],
}
我需要通过传入的相同属性覆盖现有数据,如: pageInfo 、 totalCount等,但在边缘的情况下,我需要仔细合并现有和传入项目。 为了使它更优雅并避免重复,我想遍历传入的项目并检查每个项目是否唯一。 例如。 如果现有边不包含传入.
所以我想知道是否可以使用存在于每个节点中的 graphql 分页游标作为比较参数。 我知道我可以使用项目的 ID,但如果也可以使用 Cursor 值,我可以避免使用边缘项目的更深的属性级别
下面是一个数据结构的例子:
{
"listArticles": {
"totalCount": 22,
"pageInfo": {
"startCursor": "NjE2N2ZlMmI4N2NiNDczMGY0N2U5MGQ5",
"endCursor": "NjE2ZDkzYTg0NDA5MWYyN2E0MmFkMGM5",
"hasNextPage": true,
"__typename": "PageInfo"
},
"edges": [
{
"cursor": "NjE2N2ZlMmI4N2NiNDczMGY0N2U5MGQ5",
"node": {
"id": "6167fe2b87cb4730f47e90d9",
"commentsThreadId": "6167fe2b87cb4730f47e90d8",
"__typename": "Article"
},
"__typename": "ArticleEdge"
},
{
"cursor": "NjE2ZDkzYTg0NDA5MWYyN2E0MmFkMGM5",
"node": {
"id": "616d93a844091f27a42ad0c9",
"commentsThreadId": "616d93a844091f27a42ad0c8",
"__typename": "Article"
},
"__typename": "ArticleEdge"
},
],
"__typename": "ArticleConnection"
}
}
谢谢你的帮助!
我不建议使用游标作为唯一标识符,尽管它们最终可能会唯一标识节点。 它们应该仅用于它们的用途:用于在页面内定位节点的不透明字符串。
据我所知,根据它们的实现,两个节点不能共享一个同一个游标,但两个游标可以用于一个同一个节点。
我只会“更深一层”并使用实际的项目 ID。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.