【问题标题】:How to get rows count from Amazon DynamoDB using Lambda AWS如何使用 Lambda AWS 从 Amazon DynamoDB 获取行数
【发布时间】:2015-08-25 03:03:53
【问题描述】:

我的 Lambda 脚本是:

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 只能在 Filter 或 Expected 有两个或多个元素时使用] message: 'ConditionalOperator 只能在 Filter 或 Expected 有两个或更多元素时使用', 代码:'ValidationException', 时间:2015 年 6 月 10 日星期三 03:12:34 GMT+0000 (UTC), 状态码:400, 可重试:假,

请帮帮我!

【问题讨论】:

    标签: amazon-dynamodb aws-lambda


    【解决方案1】:

    您指定了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";
    ...
    

    【讨论】:

      猜你喜欢
      • 2021-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-15
      • 2022-01-22
      • 2016-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多