2017-05-23 3 views
0

Ich stehe vor einem Problem mit der Abfrage von Daten aus DynamoDB kann jemand von Ihnen mir dabei helfen? Ich bin in NodeJS codieren.Wie Daten von Dynamodb mit Keycondition Ausdruck mit Sortierschlüssel Zeitstempel abrufen?

Mein Tisch sieht aus wie unten mit,

Primary key: RequestId 
Secondary index: Userid with sortkey Timestamp 

Wenn ich die Daten mit UserId bin ziehen, ich bin viel ist immer für Datensätze so, plant, die Daten mit Zeitstempel Zustand zu ziehen.

RequestId Anfrage Timestamp UserId

var doc = require("dynamodb-doc"); 
var dynamo = new doc.DynamoDB(); 
var userid_col = "amzn1.ask.account.AGCAPY7JBHQWHTNGAHJJ"; 
var databaserec = { TableName: "dna_cdknow_prod_historylog", 
    IndexName: "UserId-TimeStamp-index", 
    KeyConditionExpression: "UserId = :input", 
    FilterExpression : 'created between :val1 and :val2', 
    ExpressionAttributeValues:{ ":input": userid_col, ":val1" : "2016-05-23T00:00:00Z", ":val2" : "2017-05-23T16:20:49Z" } }; 
+0

-Code, var doc = require ("dynamodb-doc"); var dynamo = neu doc.DynamoDB(); var userid_col = "amzn1.ask.account.AGCAPY7JBHQWHTNGAHJJ"; var databaserec = { Tablename: "dna_cdknow_prod_historylog" Indexname: "Benutzer-ID-zeitstempel index", KeyConditionExpression: "userid =: input" Filterexpression: 'erstellt zwischen: val1 und: val2', ExpressionAttributeValues: { ": Eingabe": userid_col, ": val1": "2016-05-23T00: 00: 00Z" ": val2": "2017-05-23T16: 20: 49Z" } }; – abhishek

+0

Was ist das Problem? Es ist nicht klar. Erhalten Sie einen Fehler/eine Ausnahme? – notionquest

+0

Ich bekomme kein Databack von der Datenbank und auch nicht klar, wie man KeyConditionExpression schreibt ... – abhishek

Antwort

1

Der Code unten sollte funktionieren, wenn die GSI Definition lautet wie folgt: -

UserId - Partition key of GSI 
created - Sort key of GSI 

Korrigierte Code: -

var databaserec = { 
    TableName: "dna_cdknow_prod_historylog", 
    IndexName: "UserId-TimeStamp-index", 
    KeyConditionExpression: "UserId = :input AND created between :val1 and :val2'",  
    ExpressionAttributeValues:{ ":input": userid_col, ":val1" : "2016-05-23T00:00:00Z", ":val2" : "2017-05-23T16:20:49Z" } 
}; 

docClient.query(databaserec, function(err, data) { 
    if (err) { 
     console.error("Unable to query. Error:", JSON.stringify(err, null, 2)); 
    } else { 
     console.log(params); 
     console.log("Query succeeded.");   
     data.Items.forEach(function(item) { 
      console.log("Item :" + JSON.stringify(item));   
     }); 
    } 
}); 
+0

Jetzt funktioniert es perfekt gut .. Ich habe einige Probleme mit der Permeation und auch mit reservierten Keywords konfrontiert. Permeations wurden vom AWS-Admin-Team aufgelöst und die Zeitstempelspalte, die ich durch ExpressionAttributeNames ersetzt habe :). Danke für all Ihre Unterstützung .... – abhishek

+0

Könnten Sie bitte die Antwort akzeptieren, wenn es hilfreich war? Vielen Dank – notionquest

Verwandte Themen