簡體   English   中英

DynamoDB 中模式的 AppSync 錯誤 ID

[英]AppSync wrong id for schema in DynamoDB

我將 graphql API 與 AppSync 一起使用,它接收來自 lambda function 的發布請求,該請求由 AWS IoT 觸發,傳感器數據采用以下 JSON 格式:

{ "scoredata": { "id": "240", "distance": 124, "timestamp": "09:21:11", "Date": "04/16/2022" } }

lambda function 使用這個 JSON object 對 graphql API 進行post請求,AppSync將這些數據放到DynamoDB中存儲。 我的問題是,每當我在我的 lambda function 中解析 JSON object 以檢索 id 值時,id 值與存儲在 DynamoDB 中的 id 值不匹配; appsync 似乎自動生成一個 id。

這是從 cloudwatch 向 graphql api 發出的請求的屏幕截圖:

這是 DynamoDB 存儲的內容:

我想知道為什么當發布請求 ID 值為“240”時 DynamoDB 中的 ID 顯示為 964a3cb2-1d3d-4f1e-a94a-9e4640372963”,如果有什么我可以解決這個問題。

我不能確定,但我猜 dynamo db 模式在插入時自動生成 id 字段並使用 uuid 作為 id 類型。 另一種方法是引入一個新的屬性,如 score_id 來存儲這個無關的 id。

如果您使用的是 amplify,那么您生成的請求映射模板很可能會自動將“id”字段識別為在運行時生成的唯一標識符。

我建議你看看你的 VTL 請求模板,你很可能會發現這樣的東西:

$util.qr($context.args.input.put("id", $util.defaultIfNull($ctx.args.input.id, $util.autoId())))

肯定自生成的id來自$util.autoId()

可能一些舊版本的 Amplify 可以省略驗證$util.defaultIfNull($ctx.args.input.id,...並始終通過自生成它來覆蓋 ID。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM