【发布时间】:2018-03-23 03:00:49
【问题描述】:
我正在使用 DynamoDB API 试验 AWS-SDK-GO...
我正在尝试查询数据库并返回一个字符串。但是我在解析返回值时遇到了一些问题......
结构
type Item struct {
slug string
destination string
}
查询函数
input := &dynamodb.GetItemInput{
Key: map[string]*dynamodb.AttributeValue{
"slug": {
S: aws.String(slug),
},
},
TableName: db.TableName,
}
result, err := db.dynamo.GetItem(input)
if err != nil {
return "", err
}
n := Item{}
err = dynamodbattribute.UnmarshalMap(result.Item, &n)
if err != nil {
log.Printf("Failed to unmarshal Record, %v", err)
return "", err
}
log.Printf("dump %+v", n)
log.Printf("echo %s", n.slug)
log.Printf("echo %s", n.destination)
log.Printf("orig %v", result.Item)
结果
2017/10/11 14:21:34 dump {slug: destination:}
2017/10/11 14:21:34 echo
2017/10/11 14:21:34 echo
2017/10/11 14:21:34 orig map[destination:{
S: "http://example.com"
} slug:{
S: "abcde"
}]
为什么返回的项目是空的?
我试图到处寻找,但没有找到解决方案....
【问题讨论】:
-
dynamodb表中属性destination的数据类型是什么?
-
把它们都串起来,像结构体
-
您是否尝试过以下解决方案?
-
如果你想Unmarshal一个
Item实例你必须公开它的属性,只需将每个属性的第一个字母大写
标签: amazon-web-services go amazon-dynamodb aws-sdk-go