繁体   English   中英

AWS appsync GraphQL 聚合计数

[英]AWS appsync GraphQL aggregate counts

而不是所有的项目,我只想要 appsync 查询中的项目数。看下面的例子:

我的架构:

type Post @model {
  id: ID!
  title: String!
  comments: [Comment] @hasMany
}

type Comment @model {
  id: ID!
  content: String!
  post: Post @belongsTo
}

在 getPost 查询中,如果我们不提供分页限制,我们可以获取与 post 相关的所有评论列表。 但我不想要评论列表,我想要评论总数。 当用户单击评论图标时,我将在单独的查询中获取评论。

现在我的问题是如何获得评论是否有可用的内置方法或者我必须手动进行( how )?

DynamoDB 在 API 中没有count function,因此在 AppSync 的 VTL 中也不可用。 DynamoDB 的概念是具有可扩展的 LOOKUP 查询,这些查询会命中少量记录,如果您需要 SCAN 很多记录,这是可能的,但效率不高。

实现您所追求的计数器的最佳方法是准备它们以进行 LOOKUP。 在每个addComment事件上,您可以增加评论计数器,在每个deleteComment事件上,您可以减少该计数器。

下面是增加计数器的 CLI 命令示例,您可以将其包含在解析器 VTL 代码中。

aws dynamodb update-item \
    --table-name Posts \
    --key '{"Id":{"N":"789"}}' \
    --update-expression "ADD CommentCounter :q" \
    --expression-attribute-values '{":q": {"N": "1"}}' \
    --return-values ALL_NEW

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM