Amazon web services 无法解组dynamodb属性
我正在试验AWS-SDK-GO和DynamoDB API 我试图查询数据库并返回一个字符串。但是我在解组返回值时遇到了一些问题 结构Amazon web services 无法解组dynamodb属性,amazon-web-services,go,amazon-dynamodb,aws-sdk-go,Amazon Web Services,Go,Amazon Dynamodb,Aws Sdk Go,我正在试验AWS-SDK-GO和DynamoDB API 我试图查询数据库并返回一个字符串。但是我在解组返回值时遇到了一些问题 结构 type Item struct { slug string destination string } 查询函数 input := &dynamodb.GetItemInput{ Key: map[string]*dynamodb.AttributeValue{ "slug": { S:
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"
}]
为什么返回的项目是空的
我试着到处找,但找不到解决方案……我发现了这个问题,而且似乎是相关的,解组结构的特定属性似乎可以做到这一点 范例
var item Item
if err = dynamodbattribute.Unmarshal(result.Item["destination"], &item.destination); err != nil {
log.Printf("UnmarshalMap(GetItem response) err=%q", err)
}
我不确定你是否试过这个。我认为,如果你能改变结构如下所述,它可能会解决问题 我假设
slug
和destination
都被定义/保存为DynamoDB表中的字符串属性
type Item struct {
Slug string`json:"slug"`
Destination string`json:"destination"`
}
将打印更改为:-
log.Printf("echo %s", n.Slug)
log.Printf("echo %s", n.Destination)
dynamodb表中属性destination的数据类型是什么?将它们都串起来,就像下面的结构一样。您尝试过下面的解决方案吗?如果您想创建一个
项
实例,您必须公开其属性,只需将每个属性的第一个字母作为大写字母即可