node.js - DynamoDB 扫描 FilterExpression 返回空结果

标签 node.js amazon-web-services amazon-dynamodb

我正在尝试使用nodejs aws sdk过滤dynamodb扫描操作返回的数据,但返回的数据有0个项目。

响应:{"Items":[],"Count":0,"ScannedCount":15}

我尝试过 FilterExpression 和 ScanFilter 但得到相同的结果。

过滤表达式:

var params = {
            TableName: tableName,
            FilterExpression: 'active = :active',
            ExpressionAttributeValues: {
                ':active': {
                    S: '1'
                }
            }
        };

扫描过滤器:

var params = {
            TableName: tableName,
            ScanFilter: {
                'active': {
                    "AttributeValueList": [{ "S": "1" }],
                    "ComparisonOperator": "EQ"
                }
            }
        };

这是nodejs代码:

        dynamodb.scan(params, onScan);

        function onScan(err, data) {
            if (err) {
                console.error('Unable to scan the table. Error JSON:', JSON.stringify(err, null, 2));
            } else {
                if (typeof data.LastEvaluatedKey != 'undefined') {
                    params.ExclusiveStartKey = data.LastEvaluatedKey;
                    dynamodb.scan(params, onScan);
                }
                if (data && data.Items)
                    callback(data.Items);
                else
                    callback(null);
            }
        }

我在 dynamodb 控制台中检查了相同的过滤条件并得到了预期的结果。

dynamodb console screenshot

最佳答案

@bharathp 的回答对我有用,

在aws命令行中必须将参数指定为{"S":"s1"}

aws dynamodb scan \
 --table-name aws-nodejs-typescript-dev \
 --filter-expression "id = :search" \
 --expression-attribute-values '{":search":{"S":"s1"}}'

在 Node 代码中只需":search": "s1"

const params = {
  TableName: process.env.DYNAMODB_TABLE,
  ExpressionAttributeValues: {
    ":search": "s1"
  },
  FilterExpression: "id = :search",
  ProjectionExpression: "id",
};

dynamoDb.scan(params, (error, result) => {

关于node.js - DynamoDB 扫描 FilterExpression 返回空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46864674/

相关文章:

ios - Amazon AWS DynamoDB 帮助选择主键

node.js - sequelize datatypes.NOW 函数不生成时间戳

node.js - 连接MongoDB Atlas时如何修复 'Error: querySrv EREFUSED'?

javascript - 如何编写一个可以与 Node.js、RequireJS 以及没有它们一起工作的模块

bash - AWS CodeDeploy [标准错误]/usr/bin/env : node: No such file or directory

amazon-web-services - AWS Cloudformation - 对现有资源进行逆向工程

amazon-web-services - 了解kms政策?

hadoop - 如何在不覆盖现有列的情况下将数据复制到另一个表

javascript - AWS - 一个必需的键没有被赋予值

javascript - 添加记录时出现 ValidatorError