Запрос вложенных атрибутов на DynamoDB - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть что-то вроде этого в «Динамо»:

{
    "mail": "user@anonymous.com",
    "data": {
        "type": 1
    }
}

У меня есть индекс по атрибуту «mail», и я пытаюсь выполнить запрос по всем данным, найденным с указанной почтой, фильтрующим атрибут «data»,Примерно так:

const params = {
    TableName: 'tableName',
    IndexName: "mail_index",
    KeyConditionExpression: "#mail = :mail",
    FilterExpression: '#status = :val',
    ExpressionAttributeNames: {
        '#mail': 'mail',
        '#status': 'data.type'
    },
    ExpressionAttributeValues: {
        ':mail': 'user@anonymous.com',
        ':val': {N: 5}
    } 
};

dynamoDoc.query(params, (err, data) => {
    console.log(data);
});

Но я всегда получаю пустой результат.Что я делаю не так?

1 Ответ

0 голосов
/ 28 февраля 2019

Попробуйте:

const params = {
    TableName: 'tableName',
    IndexName: "mail_index",
    KeyConditionExpression: "#mail = :mail",
    FilterExpression: '#data.#type = :val',
    ExpressionAttributeNames: {
        '#mail': 'mail',
        '#data': 'data',
        '#type': 'type'
    },
    ExpressionAttributeValues: {
        ':mail': 'user@anonymous.com',
        ':val': {N: 5}
    } 
};

Поскольку data и type являются зарезервированными словами , DynamoDB требует, чтобы оба из них были экранированы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...