Dynamodb FilterExpression仅返回一个Item

时间:2016-02-23 20:02:54

标签: javascript amazon-dynamodb

我有一个带有名为“审批”列的dynamodb表,其中包含几个“审批”值的测试项,其中包括“待定”,“已批准”和“未批准”。我有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 appro LIKE'pending';”如果是在SQL中。

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

1 个答案:

答案 0 :(得分:0)

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

希望上面的代码能够很好地运行,作为使用FilterExpression的简单示例。