2016-05-20 8 views
0

Ich versuche, meine Scan-Ergebnis mit mehreren Filterausdruck Werte in einer Lambda-Funktion, aber mit einem Fehler zu filtern.DynamoDb Filterausdruck funktioniert nicht auf Lambda

Lambda-Funktion:

'use strict'; 
console.log('Loading function'); 
var AWS = require("aws-sdk"); 
var dynamodb = new AWS.DynamoDB(); 

exports.handler = (event, context) => { 

    var params = { 
    TableName : "4298.Dev.Log_OnP.RecruitingDemandOrders", 
    FilterExpression: ("#DFC <> Recruiting" 
        ,"#DS = :FI" 
        ,"#ETA = :FA" 
        ), 
    ExpressionAttributeNames: { 
     "#DS": "demand.status" 
     ,"#DFC":"demand.fulfillmentChannel3" 
     ,"#ETA":"exportedToATAS" 

    }, 
    ExpressionAttributeValues: { 
     ":FA": {"S" : "false"} 
     ,":FI":{"S" : "Filled"} 
     } 

    } 

    dynamodb.scan(params, function(err, data) { 

     if(err) { 
      console.log('dynamoProcessor-getdemandRecord ERROR' + err); 
     } else { 

        for (var i in data.Items) { 
      i = data.Items[i]; 
      console.log(i); 
      context.done(null, "Ciao!"); 
     } 
        } 
}); 

} 

Fehler: Wert in ExpressionAttributeNames ungenutzt in Ausdrücken zur Verfügung gestellt: Schlüssel: {#DS, #DFC}

Haben schreibe ich den richtigen Filterausdruck?

Antwort

0

Ich denke, dass Sie Ihren FilterExpression Wert falsch einstellen. Es sollte eine einzelne Zeichenfolge sein, die die gleiche Syntax wie ConditionalExpression verwendet. Die Syntax ist definiert here.

Versuchen Sie es zu diesem Wechsel:

FilterExpression: "#DFC <> Recruiting AND #DS = :FI AND ETA = :FA", 
Verwandte Themen