2015-06-10 110 views
1

我LAMBDA腳本是:如何獲得行使用亞馬遜DynamoDB算LAMBDA AWS

var AWS = require("aws-sdk"); 
var DOC = require("dynamodb-doc"); 
AWS.config.update({region: "us-west-1"}); 
var docClient = new DOC.DynamoDB(); 
var dynamodb = new AWS.DynamoDB(); 

exports.handler = function(event, context) { 
    var params = {}; 
    params.TableName = "Emails"; 
    params.ConditionalOperator = "AND"; 
    params.ScanFilter = { 
     Machinekey:{ 
      ComparisonOperator:"EQ", 
      AttributeValueList: [{S: "okok"}] 
     } 
    }; 
    params.Select= "COUNT"; 

    //params.IndexName = "Machinekey-index"; 
    //params.KeyConditions = docClient.Condition("EmailId", "NOT_NULL"); 
    //params.QueryFilter = docClient.Condition("Machinekey", "EQ","ARUZE-010415_15112442NLHIYTLY-A23V3.9"); 
    dynamodb.scan(params, function(err, data) { 
    if (err) { 
     console.log(err, err.stack); 
    } else { 
     //console.log(data); 
     context.succeed(data.Count); 
    } 
}); 
}; 

執行日誌的結果:

[ValidationException:當過濾器或預計有隻能用ConditionalOperator兩個或更多元素] 消息:'條件運算符只能在過濾器或期望值具有兩個或更多個元素時使用', 代碼:'ValidationException', time:Wed Jun 10 2015 03:12:34 GMT + 0000(UTC), statusCode:400, retryable:false,

請幫幫我!

回答

0

您指定ConditionalOperator = "AND";,但您當前只包含一個條件(Machinekey ==「okok」)的查詢不需要此選項。如果您有兩個或更多的條件,您只需要ConditionalOperator

嘗試註釋掉ConditionalOperator,再次嘗試它:

var params = {}; 
params.TableName = "Emails"; 
//params.ConditionalOperator = "AND"; 
params.ScanFilter = { 
    Machinekey:{ 
     ComparisonOperator:"EQ", 
     AttributeValueList: [{S: "okok"}] 
    } 
}; 
params.Select= "COUNT"; 
...