【问题标题】:How can I store an array into dynamoDB table如何将数组存储到 dynamoDB 表中
【发布时间】:2020-06-20 03:52:47
【问题描述】:

我有以下结构:

type User struct {
  ID       string    `json:"id"`
  Name     string    `json:"name"`
  LastName string    `json:"lastName"`
  User     string    `json:"user"`
  Password string    `json:"password"`
  Vehicles []Vehicle `json:"vehicles"`
}
type Vehicle struct {
  Plate string `json:"plate"`
}

我想在我的 DynamoDB 中存储一组车辆。我做了一些研究,发现我应该使用以下代码:

input := &dynamodb.PutItemInput{
    TableName: aws.String(tableUsers),
    Item: map[string]*dynamodb.AttributeValue{
        "id": {
            S: aws.String(fmt.Sprintf("%v", uuid)),
        },
        "name": {
            S: aws.String(user.Name),
        },
        "lastName": {
            S: aws.String(user.LastName),
        },
        "user": {
            S: aws.String(user.User),
        },
        "password": {
            S: aws.String(user.Password),
        },
        "vehicles": {
            L: [{
                M: {
                    "plate": {S: aws.String("test")},
                },
            }],
        },
    },
}

但我一直有语法错误:

L: [{
    M: {
        "plate": {S: aws.String("test")},
    },
}],

我做错了什么?

【问题讨论】:

    标签: amazon-web-services go amazon-dynamodb


    【解决方案1】:

    如果您查看 dynamodb 的 godoc:https://docs.aws.amazon.com/sdk-for-go/api/service/dynamodb/#AttributeValue

    可以看到L这个字段有如下类型:[]*AttributeValue

    当你创建一个切片文字时,你应该指定它的类型。 所以你的情况是:

    L: []*dynamodb.AttributeValue{
      {
        M: map[string]*dynamodb.AttributeValue{
          "plate": {S: aws.String("test")}
        }
      }
    }
    

    如果您想更好地理解结构、切片和映射,可以阅读以下文章:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-28
      • 2020-05-30
      • 2021-03-11
      • 1970-01-01
      • 2020-02-04
      • 2018-07-21
      • 2012-01-13
      • 2011-03-25
      相关资源
      最近更新 更多