Как сделать запрос массива объектов в DynamoDB, используя FilterExpression в операции сканирования - PullRequest
0 голосов
/ 02 января 2019

enter image description here

Как запросить массив объектов (workingDays) ключ, содержащий только «Tue» в DynamoDb с операцией сканирования, я запросил с помощью выражения фильтра, но я не получаюрезультаты.

var queryData = {
        TableName: tableName,
        FilterExpression: "contains (workingDays, :dayVal)",
        ExpressionAttributeValues: {
            ":dayVal": {
                S:"Tue"
            }
        }
    };

    console.log("getParams ==>", queryData)
    dynamodb.scan(queryData, function (err, details) {
        if (err) {
            console.log(err, err.stack); // an error occurred
            callback(err, null)
        }
        else{
           callback(null, details)

        }
    })

1 Ответ

0 голосов
/ 03 января 2019

ExpressionAttributeValues ​​ в вашем запросе содержит String ["S"] в качестве 'ключа' для значения 'Tue', где, как и в вашей таблице, 'workingDays' является списком картыобъект , содержащий значение для ключей дня.

Попробуйте следующий код:

var queryData = {
    TableName: tableName,
    ExpressionAttributeNames: {
         "#workingDays": "workingDays",
    },
    FilterExpression: "contains (#workingDays, :dayVal)",
    ExpressionAttributeValues: {
      ":dayVal": {
          "day":"Tue"
      }
   }
};

console.log("getParams ==>", queryData)

docClient.scan(queryData, function (err, details) {
    if (err) {
        console.log(err, err.stack); // an error occurred
       // callback(err, null)
    }
    else{
       // callback(null, details)
       console.log(details);
   }
});
...