Dynamodb查询不起作用

时间:2015-02-17 21:10:07

标签: node.js amazon amazon-dynamodb

我想在query的多个列上执行dynamodb 我想搜索4个字段 rule0,因此hash key是唯一的, which_ruleGlobal Indexrule1Global Indexrule2Global Index

我首先搜索rule0然后rule1然后rule2 我正在使用以下功能来匹配rule1导致未找到rule0

的匹配项
function dynamoQueryRule1(rule0, rule1, funcQ) {
    which_rule = "rule1";
    var q = {
        "KeyConditions": {
            "rule0": {
                "ComparisonOperator": "EQ", 
                "AttributeValueList": [{
                        "S": rule0
                    }]
            }
        },
        "TableName": "tbl_scripts" + table_prefix, 
        "AttributesToGet": ['id'],
        "ConditionalOperator": "AND",
        "QueryFilter": {

                    "which_rule": {
                        "ComparisonOperator": "EQ",
                        "AttributeValueList": [{
                                "S": which_rule
                            }]
                    },
                    "rule1": {
                        "ComparisonOperator": "EQ",
                        "AttributeValueList": [{
                                "S": rule1
                            }]
                    }
        }
    };
    var params = {
        TableName: this.options.tbl_name
    };

但是这个函数永远不会得到rule1的结果。即使我已经在dymamo table中创建了这些规则。 为了检查发电机数据,我已经检查了scan它的工作正常但scan有1mb的限制而不是完美的用例来解决我的问题。 请帮我查找query格式的错误。

1 个答案:

答案 0 :(得分:0)

检查您的响应对象是否有[LastEvaluatedKey]!= null。

如果设置了[LastEvaluatedKey],则表示您尚未查询整个数据集(同样是因为1M限制)。因此,您需要再次调用查询,在查询中设置ExclusiveStartKey =上一个响应中的LastEvaluatedKey。 (将所有结果附加在一起)

这个类似的问题显示了如何在node.js中执行此操作的语法:  Recursive Fetch All Items In DynamoDB Query using Node JS