2017-06-11 2 views
0

Ich finde nicht, wie PutItem für ein StringSet in DynamoDB über API Gateway korrekt aufgerufen wird. Wenn ich es so nenne, wie ich es für eine Liste von Maps tun würde, bekomme ich Objekte zurück. Beispieldaten sind unten.API-Gateway und DynamoDB PutItem für String Set

{ 
    "eventId": "Lorem", 
    "eventName": "Lorem", 
    "companies": [ 
     { 
      "companyId": "Lorem", 
      "companyName": "Lorem" 
     } 
    ], 
    "eventTags": [ 
     "Lorem", 
     "Lorem" 
    ] 
} 

Und mein Beispiel Vorlage Aufruf für Unternehmen:

"companies" : { 
    "L": [ 
      #foreach($elem in $inputRoot.companies) { 
      "M": { 
       "companyId": { 
       "S": "$elem.companyId" 
       }, 
       "companyName": { 
       "S": "$elem.companyName" 
       } 
      } 
     } #if($foreach.hasNext),#end 
     #end 
    ] 
} 

Ich habe versucht, es mit String Set gelistet nennen, aber es immer noch Fehler und sagt mir, dass „Start der Struktur oder gefunden Karte wo nicht erwartet "oder dass Serialisierung fehlgeschlagen ist.

Was ist der richtige Weg, um PutItem zum Konvertieren eines Arrays von Strings in ein String Set aufzurufen?

+0

Sie verwenden Javascript? – notionquest

+0

Ich mache das direkt über die Körpervorlage im API-Gateway. Ich gebe nur ein Format der Anwendung/json an. – user3342237

Antwort

0

Wenn Sie JavaScript AWS SDK verwenden, können Sie den SET-Datentyp mithilfe der Document Client-API (docClient.createSet) speichern.

docClient.createSet - konvertiert das Array in Daten SET Typ

var docClient = new AWS.DynamoDB.DocumentClient(); 

    var params = { 
    TableName:table, 
    Item:{ 
     "yearkey": year, 
     "title": title  
     "product" : docClient.createSet(['milk','veg'])   
    } 
}; 
+0

Ich ging diese Route und stattdessen das JavaScript SDK in Lambda. Vielen Dank! – user3342237

Verwandte Themen