gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 22:45:42 25 4
gpt4 key购买 nike

我正在尝试使用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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com