Home Articles

Dynamodb FilterExpression仅返回一个Item

Asked
Viewed 175 times
0

我有一个带有名为“批准”列的动力学表,其中有几个测试项目,其中“批准”的值包括“待定”,“已批准”和“未批准” . 我有3个项目“待定” .

我正在使用以下Lambda函数来检索项目,我只想获得“待定”的项目 . 所以我正在使用FilterExpression . 这是我的完整功能:

var doc = require('dynamodb-doc');
var dynamo = new doc.DynamoDB();

exports.handler = function(event, context) {
    var params = {
        TableName: 'mytable',
        FilterExpression: 'contains(approval, :approval_value)',
        ExpressionAttributeValues: {':approval_value': 'pending'}
    };

    dynamo.scan(params, onScan);

    function onScan(err, data) {
        if (err) {
            console.error("Unable to scan the table. Error JSON:", JSON.stringify(err, null, 2));
        } else {
            console.log("Scan succeeded.");
            context.succeed(data);
        }
    }
};

基本上我想做一个,“SELECT * FROM mytable WHERE approval LIKE'pending';”如果是在SQL中 .

奇怪的是,在我期待的时候只返回项目3.我没有使用限制 . 为什么它只返回一个项目?

1 Answer

  • 0

    Welp,令人尴尬的是,我正在阅读执行结果错误 . 它正确地返回了3个结果,但只有第一个项目出现在“首屏”(可能是不使用AWS控制台进行此项操作的另一个原因) .

    希望上面的代码能够很好地运行,它将帮助其他人作为使用FilterExpression的简单示例 .

Related