es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo creo una consulta de GraphQL para DynamoDB?

Mi tabla DynamoDB ‘EventChat’ tiene ‘eventId’ como clave de partición y ‘createdOn’ como clave de ordenamiento. Estoy usando AppSync y Apollo client para realizar consultas en la base de datos.

Me gustaría obtener todos los elementos para un determinado ‘eventId’ y elementos creados ENTRE dos fechas de ‘createdOn’.

¿Cómo deberían ser mi esquema, consulta y plantilla de mapeo de solicitud?

Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Esquema

    Primero, debemos definir el esquema para la consulta:

    type Query {
        getEventChatItems(eventId: ID!, startCreatedOn: String!, endCreatedOn: String!): [EventChat!]!
    }
    
    type EventChat {
        eventId: ID!
        createdOn: String!
        message: String!
        // campos adicionales, si los hay
    }
    

    La consulta getEventChatItems toma tres parámetros: eventId, startCreatedOn y endCreatedOn. Estos parámetros se utilizarán para recuperar los elementos de chat de evento que coinciden con el eventId proporcionado y se crean dentro del rango especificado por startCreatedOn y endCreatedOn. La consulta devuelve un arreglo de objetos EventChat.

    Consulta

    La consulta GraphQL se vería así:

    query GetEventChatItems($eventId: ID!, $startCreatedOn: String!, $endCreatedOn: String!) {
      getEventChatItems(eventId: $eventId, startCreatedOn: $startCreatedOn, endCreatedOn: $endCreatedOn) {
        eventId
        createdOn
        message
      }
    }
    

    Plantilla de mapeo de solicitud

    Se puede utilizar la siguiente plantilla de mapeo para recuperar los elementos según los parámetros proporcionados:

    {
        "version": "2017-02-28",
        "operation": "Query",
        "query": {
            "expression": "eventId = :eventId AND createdOn BETWEEN :startCreatedOn AND :endCreatedOn",
            "expressionValues": {
                ":eventId": { "S": "${ctx.args.eventId}" },
                ":startCreatedOn": { "S": "${ctx.args.startCreatedOn}" },
                ":endCreatedOn": { "S": "${ctx.args.endCreatedOn}" }
            }
        },
        "index": "eventId-createdOn-index"
    }
    

    Explicación

    La operación Query se utiliza para recuperar elementos de la tabla EventChat. El parámetro expression especifica las condiciones para que la consulta coincida. En este caso, queremos elementos que coincidan con el atributo eventId igual al eventId proporcionado y el atributo createdOn esté entre los valores startCreatedOn y endCreatedOn proporcionados.

    El parámetro expressionValues especifica los valores que se vincularán a las expresiones en el parámetro expression.

    El parámetro index especifica el índice que se utilizará para la consulta. En este caso, estamos utilizando el índice eventId-createdOn-index, que tiene eventId como clave de partición y createdOn como clave de ordenamiento.

Comments are closed.