2016-07-20 4 views
1

Ich verwende den AWS.DynamoDB.DocumentClient mit Dynamodb local (Port 8080). Wenn ich einen Put ausführe, ist die data Variable im Callback ein leeres Objekt. Habe ich etwas verpasst?AWS.DynamoDB.DocumentClient liefert keine Daten für put

import * as AWS from "aws-sdk"; 


AWS.config.update({ 
    region: "us-west-2", 
    endpoint: "http://localhost:8080" 
}); 


const docClient: any = new AWS.DynamoDB.DocumentClient(); 


const item = { 
     someField: "456", 
     other:   "123" 
}; 

const params = { 
    TableName: "TableName", 
    Item: item 
}; 

docClient.put(params, function(err, data) { 
    if (err) console.log(err); 
    else console.log(data); // this produces: {} 
}); 

Es gibt keine Fehler, und das Element eingeführt wird \ aktualisiert - aber die data Variable ein leeres Objekt. Sollte das nicht Werte enthalten?

Dank

Antwort

1

Sie fragen nicht für alle Werte zurück zu kommen, also warum wollen Sie es wieder kommen alle Werte sein? Sie müssen die entsprechenden Parameter ReturnConsumedCapacity und/oder ReturnItemCollectionMetrics und/oder ReturnValues einstellen, wenn Sie möchten, dass irgendetwas davon in der Antwort zurückkommt.

+1

Also, was ist die richtige Syntax, um put() das eingefügte Objekt oder einige seiner Attribute zurückzugeben? –

+1

@DangerGinger Überprüfen Sie die Parameter Dokumentation auf der DocumentClient Seite für Details: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html#put-property –

+1

@ MasonG.Zhwiti, tat ich das und schließlich die Lösung gefunden. Ich habe diese Frage gegoogelt und diese Antwort ist ein guter Hinweis, bietet aber keine spezifische Lösung für die Frage von OP. –

0

Wie Sie keinen Wert für „Return“ einstellen können, die tatsächlich etwas Sinnvolles zurückkehrt, ich um ihn durch einfache Weitergabe wieder das ursprüngliche Element Daten gearbeitet, die in übergeben wurde.

import * as AWS from "aws-sdk"; 


AWS.config.update({ 
    region: "us-west-2", 
    endpoint: "http://localhost:8080" 
}); 


const docClient: any = new AWS.DynamoDB.DocumentClient(); 


const item = { 
     someField: "456", 
     other:   "123" 
}; 

const params = { 
    TableName: "TableName", 
    Item: item 
}; 

// Have a clear reference to this scope 
var self = this; 

docClient.put(params, function(err, data) { 
    if (err) console.log(err); 
    else console.log(self.params.Item); // this should return the data you passed in! 
}); 

I set „Selbst "als" das ", um klar zu machen, woher ich die Daten lese. Hoffe das hilft jemandem!

Verwandte Themen