Filtros - AWS AppSync GraphQL

Filtros

Ao consultar objetos no DynamoDB usando as operações Query e Scan, opcionalmente, você pode especificar um filter que avalia os resultados e retorna apenas os valores desejados.

A propriedade de filtro de uma solicitação Scan ou Query tem a seguinte estrutura:

type DynamoDBExpression = { expression: string; expressionNames?: { [key: string]: string}; expressionValues?: { [key: string]: any}; };

Os campos são definidos da seguinte forma:

expression

A expressão da consulta. Para obter mais informações sobre como gravar expressões de filtro, consulte as documentações QueryFilter do DynamoDB e ScanFilter do DynamoDB. Esse campo deve ser especificado.

expressionNames

As substituições para espaços reservados de nome do atributo da expressão, na forma de pares chave-valor. A chave corresponde a um espaço reservado de nome usado na expression. O valor deve ser uma string que corresponde ao nome de atributo do item no DynamoDB. Esse campo é opcional e deve ser preenchido apenas por substituições para espaços reservados de nome do atributo da expressão usados em expression.

expressionValues

As substituições para espaços reservados de valor do atributo da expressão, na forma de pares chave-valor. A chave corresponde a um espaço reservado de valor usado na expression e o valor deve ser um valor digitado. Para obter mais informações sobre como especificar um "valor digitado", consulte Sistema de tipo (Mapeamento de solicitação). Isso deve ser especificado. Esse campo é opcional e deve ser preenchido apenas por substituições para espaços reservados de valor do atributo da expressão usados em expression.

Exemplo

Veja a seguir uma seção de filtro para uma solicitação, onde as entradas recuperadas do DynamoDB só são retornadas se o título começa com o argumento title.

Aqui, usamos o util.transform.toDynamoDBFilterExpression para criar automaticamente um filtro a partir de um objeto:

const filter = util.transform.toDynamoDBFilterExpression({ title: { beginsWith: 'far away' }, }); const request = {}; request.filter = JSON.parse(filter);

Isso gera o seguinte filtro:

{ "filter": { "expression": "(begins_with(#title,:title_beginsWith))", "expressionNames": { "#title": "title" }, "expressionValues": { ":title_beginsWith": { "S": "far away" } } } }