首页 > 文章列表 > 将 DynamoDB 的 LastEvaluatedKey 转换为字符串的方法

将 DynamoDB 的 LastEvaluatedKey 转换为字符串的方法

436 2024-02-23
问题内容

需要将从查询输出返回的 lastevaluatedkey 传输为分页 api 调用的响应,以便用户可以使用 lastevaluatedkey 请求下一页。 是否可以使用 aws-sdk-go-v2 进行转换?

尝试使用 json 进行编组和解组,但没有成功

lek := map[string]types.AttributeValue{
    "num":  &types.AttributeValueMemberN{Value: "1"},
    "text": &types.AttributeValueMemberS{Value: "text"},
}
barray, err := json.Marshal(lek)
if err != nil {
  fmt.println(err)
}

lekDecoded := map[string]types.AttributeValue{}
err = json.Unmarshal(barray, &lekDecoded)
if err != nil {
 fmt.println(err)
}

这总是无法将其解码回map[string]types.attributevalue


正确答案


lastevaluatedkey 在响应中以纯文本形式提供。如果您想对其进行编码,例如可以使用 base64 进行编码。您可以选择任何类型的编码,只要在返回到下一个分页请求之前进行解码即可。

对 lek 进行编码

aws dynamodb scan 
--table-name test 
--limit 1 
--query lastevaluatedkey | base64
ewogicagimlkijogewogicagicagicjtijogijr3og5pwnbptxk2cxoxbw50rke1dsikicagih0kfqo

解码编码的lek

echo ewogicagimlkijogewogicagicagicjtijogijr3og5pwnbptxk2cxoxbw50rke1dsikicagih0kfqo | base64 --decode
{
    "id": {
        "S": "4w8niZpiMy6qz1mntFA5u"
    }
}