Ошибка Dynamobd: результаты сканирования не фильтруются до HA SH, даже если я ввел фактический идентификатор записи - PullRequest
1 голос
/ 04 марта 2020

Я подключился к этому локальному я создал динамо с лямбда с этим кодом

console.log('Starting Function Now');
const AWS = require("aws-sdk");
const docClient = new AWS.DynamoDB.DocumentClient({region: 'us-east-1'})

exports.handler = function(event,ctx,callback){

    let scanParameters = {
        "TableName": "Accommodation_Request",
        "FilterExpression": "SSD_ID = :val",
        "ExpressionAttributeValues": {":val": {"N": "2"}},
        "ProjectionExpression": 'SSD_ID,AI_Org_ID'
    };

console.log(scanParameters)

    console.log("Your Student information");
    docClient.scan(scanParameters, function(err,data){
        if(err){
            callback(err, null)
        } else{
            callback(null,data)
        }
    });
};

После запуска Lambda я получаю этот результат

{
    "Items": [],
    "Count": 0,
    "ScannedCount": 5
}

Проблема: я не могу вернуть правильные результаты сканирования с SSD_ID = 1

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Я предполагаю, что есть еще данные для просмотра. Есть ли значение в 'LastEvaluatedKey'? Когда вы выполняете операцию сканирования с фильтром, вы можете не получить результатов по конкретному запросу. Значение LastEvaluatedKey должно быть передано в ExclusiveStartKey следующего запроса. Вы можете получить много пустых ответов, прежде чем получать какие-либо данные. Сканирования следует использовать с осторожностью, и, как правило, они не должны быть частью рабочих нагрузок (исключения, конечно, существуют).

0 голосов
/ 04 марта 2020

Это может быть в случае, если вы используете String вместо Number в вашем фильтре или у вас есть составной ключ раздела

...