go - 使用 Go SDK,如何将 DynamoDB 表项字段设置为 map ?

标签 go amazon-dynamodb

我正在尝试使用 UpdateItem 方法将表项字段的值设置为 map 。这是我尝试过的:

type myStruct {
  name string
}

myStructInstance := myStruct{name: "foo"}

_, err := svc.UpdateItem(&dynamodb.UpdateItemInput{
  TableName: aws.String("MyTable"),
  Key: myKey,
  ExpressionAttributeValues: map[string]*dynamodb.AttributeValue{
    ":m": {
      M: dynamodbattribute.MarshalMap(*myStructInstance),
    },
  },
  UpdateExpression: aws.String("SET myField = :m"),
})

有了这个,我不断收到错误:

multiple-value dynamodbattribute.MarshalMap() in single-value context

我做错了什么?

最佳答案

啊,我忘了 MarshalMap 函数有两个返回值,所以我必须这样做:

av, err := dynamodbattribute.MarshalMap(*myStructInstance)

_, err = svc.UpdateItem(&dynamodb.UpdateItemInput{
  TableName: aws.String("MyTable"),
  Key: myKey,
  ExpressionAttributeValues: map[string]*dynamodb.AttributeValue{
    ":m": {
      M: av,
    },
  },
  UpdateExpression: aws.String("SET myField = :m"),
})

关于go - 使用 Go SDK,如何将 DynamoDB 表项字段设置为 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51294877/

相关文章:

elasticsearch - 将日志从 Kafka 发送到 Elasticsearch 的最快方法

android - 通过排序从 dynamoDB 中获取项目

amazon-web-services - 使用分区键和特定排序键列表查询 DynamoDB

http - 拆分http请求头在golang http包中有意义吗?

go - 比较 Go 中的 2 个错误进行单元测试

mysql - 什么是一个好的 AWS 解决方案(DB、ETL、Batch Job)来存储大量历史交易数据(每日刷新)以进行机器学习分析?

amazon-dynamodb - DynamoDB 如何查询重叠的时间范围

amazon-s3 - 将数据从 S3 导入到 DynamoDB

postgresql - Go postgres 连接 SSL 未启用

go - 无法通过将一个变量分配给另一个变量来在另一个变量中创建类型为 map[int]Struct 的变量的副本