Динамодб демаршал карту в структуру - PullRequest
1 голос
/ 08 апреля 2020

Я пытаюсь получить столбец из DynamodB, который сохраняется как map[string][]string (сопоставление с ключом в виде строки и значениями в виде списка строк)

пример:

{ 
  { "string1": ["1", "2"]},
  { "string2": ["3", "4"]},
}

Я получаю данные, но не могу их разархивировать и сохранить в выходных данных struct

type Record struct {
    listOfMap map[string][]string
}

scanInput := &dynamodb.ScanInput{
    TableName:            aws.String("someTable"),
    ProjectionExpression: aws.String("desiredColumnToRetrieve"),
}

dynamodbOutput, err := svc.dynamodb.Scan(scanInput)
if err != nil {
    log.Errorf("dynamodb.Scan() error - %s", err)
}

fmt.Println(dynamodbOutput)

records := []Record{}

err = dynamodbattribute.UnmarshalListOfMaps(dynamodbOutput.Items, &records)
if err != nil {
    log.Errorf("dynamodbattribute.UnmarshalListOfMaps() error - %s", err)
}

fmt.Println(records)

dynamicodb (это вывод из вышеприведенных операторов печати):

{
  Count: 2,
  Items: [{
      desiredColumnToRetrieve: {
        M: {
          string1: {
            L: [{
                S: "1"
              },{
                S: "2"
              }]
          }
        }
      }
    },{
      desiredColumnToRetrieve: {
        M: {
          string2: {
            L: [{
                S: "3"
              },{
                S: "4"
              }]
          }
        }
      }
    }],
  ScannedCount: 2
}
{[map[] map[]}

Данные не сохраняются в структуру / карту

1 Ответ

0 голосов
/ 08 апреля 2020

Вероятно, это не сработает, вам нужно сначала перебрать элементы, например:

for _, i := range dynamodbOutput.Items {
        record := Record{}

        err = dynamodbattribute.UnmarshalMap(i, &record)

И на самом деле, ваш listOfMaps - это регулярное отображение. Почему ты так называешь? Это скорее mapOfLists

Между прочим, полное сканирование таблиц No SQL не является лучшей практикой, если вы собираетесь делать это всегда, лучше рассмотреть ключи сортировки секционирования и всю схему данных. Приветствия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...