2016-02-23 5 views
0

У меня есть таблица dynamodb с столбцом под названием «утверждение» и несколько тестовых элементов в нем со значениями для «утверждения», которые включают «ожидающий», «одобренный» и «не одобрен». У меня есть 3 элемента с «ожиданием».Dynamodb FilterExpression возвращает только один элемент

Я использую следующую функцию лямбда для извлечения элементов, и я хочу получить только те элементы, которые находятся в ожидании. Поэтому я использую 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 туЬаОго WHERE утверждения LIKE 'в ожидании';" если это было в SQL.

Странно, возвращается только элемент, пока я ожидаю 3. Я не использую Limit. Почему он возвращает только один элемент?

+0

Каковы ваши ключи от хэша/диапазона? –

+0

Основной ключ раздела - «postID». Нет ключа сортировки. Я не уверен, отвечает ли это на ваш вопрос? Я относительно новичок в noSQL. –

ответ

0

Welp, смущающе, я неправильно читал результат выполнения. Он правильно возвращал 3 результата, но только первый элемент появился «над сгибом» (возможно, еще одна причина не использовать консоль AWS для этого материала).

Надеюсь, что код выше, который отлично работает, поможет кому-то еще в качестве простого примера использования фильтра FilterExpression.

Смежные вопросы