

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Filtros
<a name="js-aws-appsync-resolver-reference-dynamodb-filter"></a>

Al consultar objetos de DynamoDB mediante las operaciones `Query` y `Scan`, tiene la posibilidad de especificar un `filter` para evaluar los resultados y devolver solo los valores deseados.

La propiedad de filtro de una solicitud `Query` o `Scan` tiene la siguiente estructura:

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

Los campos se definen de la siguiente manera:

** `expression` **  
La expresión de la consulta. Para obtener más información sobre cómo escribir expresiones de filtro, consulte la documentación de [DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.QueryFilter.html) [y QueryFilter ScanFilter](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.ScanFilter.html) DynamoDB. Este campo debe especificarse.

** `expressionNames` **  
Las sustituciones de los marcadores de posición de *nombre* de atributo de expresión, en forma de pares de clave-valor. La clave corresponde a un marcador de posición de nombre utilizado en la `expression`. El valor debe ser una cadena que corresponda al nombre del atributo del elemento en DynamoDB. Este campo es opcional y solo debe rellenarse con las sustituciones de marcadores de posición de nombre de atributo de expresión que se usen en la `expression`.

** `expressionValues` **  
Las sustituciones de los marcadores de posición de *valor* de atributo de expresión, en forma de pares de clave-valor. La clave corresponde a un marcador de posición de valor usado en la `expression` y el valor tiene que ser un valor con tipo. Para obtener más información sobre cómo especificar un “valor con tipo”, consulte [Sistema de tipos (mapeo de solicitud)](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-typed-values-request). Este valor debe especificarse. Este campo es opcional y solo debe rellenarse con las sustituciones de los marcadores de posición de valor de atributo de expresión que se usen en la `expression`.

## Ejemplo
<a name="js-id18"></a>

El siguiente ejemplo es una sección de filtro para una solicitud en la que las entradas obtenidas de DynamoDB solo se devuelven si el título comienza con el argumento `title`. 

Aquí utilizamos la `util.transform.toDynamoDBFilterExpression` para crear automáticamente un filtro a partir de un objeto:

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

const request = {};
request.filter = JSON.parse(filter);
```

Esto genera el filtro siguiente:

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