混淆创建DynamoDB查询

用户名

我在dynamo DB中有以下数据

id  category    value   rule
1     a            5    1
2     b            5    1
3     c            5    1
4     a            5    2
5     b            5    2
6     a            2    3
7     b            2    3
8     a            3    4
9     b            3    4
10    c            2    4
11    d            2    4
12    b            5    5
13    c            5    5

我的目标如下。

  1. 首先扫描表格并获取rulesize 2一旦我得到这条规则,检查是否有只ab类别。忽略其余的。

这是我当前的查询。

var array=["a","b"];
 for (index = 1; index <= 5; ++index) {
        console.log(index);
        var params1 = {
            TableName: "MyCatTable",
            FilterExpression: "#rule=:rule",
            ExpressionAttributeNames: {
                "#rule": "rule"
            },
            ExpressionAttributeValues: {
                ":rule": String(index)
            }
        };

        results.push(dynamodb.scan(params1).promise().then(function (data) {
            if (data.Items.length == 2 && (array.indexOf(data.Items[0].category) >= 0)) {
                var uw = data.Items;
                return uw;
            }
        }));
    }
    return Promise.all(results);
}).then((data) => {
    var res;
    console.log("----------------------");
    console.log(data);
})

当我运行这个它返回我的规则235但是我只需要23由于5具有bc而不是ab

还是有其他方法可以过滤掉我得到的json响应?

请让我知道我要去哪里错了,我该如何解决。

谢谢

Karan Shishoo

问题出在这部分代码上:

data.Items[0].category

它仅检查“ data.Items”数组上第一个元素的类别,您需要通过检查每个元素的类别而不是仅检查第一个元素来过滤数组。返回5的原因是因为5的第一个元素是数组中存在的'b'。

*编辑-根据要求的代码片段(这应该是代码外观的粗略轮廓,但是可能会有一些错误)

if (data.Items.length == 2) {
            var uw = [];
            for(var x in data.Items){
                if(array.indexOf(x.category) >= 0) uw.push(x);
            }
            return uw;
        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章