2016-05-20 6 views
0

ラムダ関数で複数のフィルタ式の値を使用してスキャン結果をフィルタリングしようとしましたが、エラーが発生しました。DynamoDbフィルタ式がラムダで機能しない

ラムダ関数:

'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!"); 
     } 
        } 
}); 

} 

エラー:式での未使用ExpressionAttributeNamesで提供 値:キー:{#DS、#DFC}

私は正しいフィルタ式を書きましたか?

答えて

0

FilterExpressionの値を正しく設定していないと思います。 ConditionalExpressionと同じ構文を使用して、1つの文字列にする必要があります。構文はhereと定義されています。

これにそれを変更してみてください:

FilterExpression: "#DFC <> Recruiting AND #DS = :FI AND ETA = :FA", 
関連する問題