Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 为什么使用Limit和FilterExpression扫描DynamoDB不返回符合过滤器要求的项目?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要在DynamoDB上进行限制和条件扫描.

docs说:

代码(NODEJS):

var params = {
    ExpressionAttributenames: {"#user": "User"},ExpressionAttributeValues: {":user": parseInt(user.id)},FilterExpression: "#user = :user and attribute_not_exists(Removed)",Limit: 2,Tablename: "XXXX"
};

DynamoDB.scan(params,function(err,data) {
    if (err) {
        dataToSend.message = "Unable to query. Error: " + err.message;
    } else if (data.Items.length == 0) {
        dataToSend.message = "No results were found.";
    } else {
        dataToSend.data = data.Items;
        console.log(dataToSend);
    }
});

表XXXX定义:

>主分区键:用户(号码)
>主要排序键:标识符(字符串)
> INDEX:

>索引名称:RemovedIndex
>类型:GSI
>分区键:删除(数字)
>排序键: –
>属性:ALL

在上面的代码中,如果我删除Limit参数,DynamoDB将返回符合过滤器要求的项目.所以,条件还可以.但是当我使用Limit参数扫描时,结果为空.

XXXX表有5个项目.只有2个第一个具有Removed属性.当我在没有Limit参数的情况下扫描时,DynamoDB返回3个没有Removed属性的项目.

我做错了什么?

解决方法

来自您引用的文档:

通过组合Limit和FilterExpression,您已告知DynamoDB仅查看表中的前两项,并针对这些项评估FilterExpression. DynamoDB中的限制可能会令人困惑,因为它的工作方式与RDBMS中sql表达式的限制不同.

大佬总结

以上是大佬教程为你收集整理的node.js – 为什么使用Limit和FilterExpression扫描DynamoDB不返回符合过滤器要求的项目?全部内容,希望文章能够帮你解决node.js – 为什么使用Limit和FilterExpression扫描DynamoDB不返回符合过滤器要求的项目?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。