如何获得行使用亚马逊DynamoDB算LAMBDA AWS
问题描述:
我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,
请帮帮我!
答
您指定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";
...