2016-10-29 4 views
0

Ich habe das Gefühl, dass mir etwas offensichtlich fehlt, aber die Dokumentation ist für DynamoDB etwas verwirrend, besonders für NodeJS (ich sehe jedoch viel für Java!).Speichern eines Objekts in DynamoDB-Instanz über NodeJS

Ich habe ziemlich viel gesucht und nur Fragen bezüglich des alten SDK gefunden, also hoffentlich ist das keine doppelte Frage!

Ich versuche, ein Javascript-Objekt in meiner DynamoDB-Instanz zu speichern. Der Fehler, den ich bekomme, und der Code, den ich verwende, sind unten aufgeführt.

Fehler:

Unable to add item. Error JSON: { 
    "message": "One or more parameter values were invalid: 
     Type mismatch for key File expected: S actual: M", 
    "code": "ValidationException", 
    "time": "2016-10-29T19:36:02.317Z", 
    "requestId": [removed], 
    "statusCode": 400, 
    "retryable": false, 
    "retryDelay": 0 
} 

Code:

var aws = require('aws-sdk'); 
var docClient = new aws.DynamoDB.DocumentClient({ 
    "accessKeyId": AWS_ACCESS_KEY_ID, 
    "secretAccessKey": AWS_SECRET_ACCESS_KEY, 
    region: 'us-east-1', 
    endpoint: "https://dynamodb.us-east-1.amazonaws.com" 
}); 
var tableName = AWS_TABLE_NAME; 
var params = { 
    TableName: tableName, 
    Item: { 
     ProjID: projID, 
     File: { 
      name: fileName, 
      url: fileUrl 
     } 
    } 
}; 
docClient.put(params, function (err, data) { 
    if (err) { 
     console.error("Unable to add item. Error JSON:", JSON.stringify(err, null, 2)); 
    } else { 
     console.log("Added item:", JSON.stringify(data, null, 2)); 
    } 
    callback(true); 
}); 

Noch einmal, ich bin sicher, dass es eine ziemlich einfache Angelegenheit ist - ich habe ganz einfach keine Dokumentation hat mich gefunden, dass das aktualisierte, um zu helfen .

Vielen Dank im Voraus für jede Hilfe, die Sie geben können!

Antwort

0

Ist Datei ein Attribut im Schema Ihrer Tabelle? Wenn dies der Fall ist und es als String definiert ist, zeigt der angezeigte Fehler nur an, dass Sie versuchen, eine Map in ein String-Attribut einzufügen.

DynamoDB unterstützt nur Zeichenfolgen- und numerische Tasten, sodass Sie Ihr Design erneut aufrufen müssen. Vielleicht können Sie die Dateiinformationen als Zeichenfolge für den Schlüssel speichern und dann gegebenenfalls als Karte in ein separates Attribut expandieren.

+0

Danke für die Hilfe! Am Ende habe ich das Javascript-Objekt mit einem String versehen und es dann als Objekt gelesen. –

Verwandte Themen