簡體   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