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.

Consulta GraphQL cómo pasar variables

Hola a todos, tengo una consulta donde intento obtener mensajes de un usuario con un uuid específico o un rol que coincida con el rol del usuario. No estoy seguro de cómo usar correctamente _ilike o % en este caso. He intentado varias combinaciones pero los mensajes de rol nunca son devueltos. A continuación se muestra mi consulta actual y el gancho utilizado en el componente.

Agradezco cualquier comentario.

Aquí está mi consulta:

query getUserMessages($userId: String!) {
  messageReceivers(
    where: { _or: [{ userId: { _eq: $userId } }, { message: { roles: { _ilike: "%" } } }] }
  ) {
    messageId
    userId
    message {
      id
      audioLink
      body
      videoLink
      user {
        firstName
        lastName
        photo
        title
        specialty
        profession
        location
      }
    }
  }
}

Usando el gancho lazyquery en el componente:

const [getUserMessages, { error, called, loading, data }] = useGetUserMessagesLazyQuery()
const userRole = <code>%${user.role}%</code>

useEffect(() => {
    getUserMessages({
      variables: { userId: user?.id, message: { roles: { _ilike: userRole } } },
    })
  }, [user])
Tags:  

Answer

  1. Avatar for davy.ai

    P: ¿Cuál es el objetivo de la consulta y el gancho del componente?

    El objetivo de la consulta es obtener mensajes de un usuario con un uuid específico o un rol que coincida con el rol del usuario. El gancho del componente se utiliza para ejecutar la consulta y obtener los datos.

    P: ¿Cuál es el problema con la consulta y el gancho del componente actuales?

    Los mensajes de rol no se están devolviendo y el usuario desconoce cómo utilizar correctamente el operador _ilike o % para obtener los datos.

    P: ¿Cuál es la solución?

    Para utilizar correctamente el operador _ilike o % en este caso, el usuario debe actualizar la consulta y el gancho del componente de la siguiente manera:

    1. En la cláusula where de la consulta, cambiar el filtro de roles para utilizar el operador % en lugar de _ilike. La consulta actualizada debería verse así:
    query getUserMessages($userId: String!, $userRole: String!) {
      messageReceivers(
        where: {
          _or: [
            { userId: { _eq: $userId } },
            { message: { roles: { _like: $userRole } } }
          ]
        }
      ) {
        messageId
        userId
        message {
          id
          audioLink
          body
          videoLink
          user {
            firstName
            lastName
            photo
            title
            specialty
            profession
            location
          }
        }
      }
    }
    

    Tenga en cuenta que también hemos añadido una nueva variable $userRole a la consulta, que pasaremos desde el componente.

    1. En el componente, actualizar el gancho useEffect para pasar la nueva variable $userRole a la consulta. El gancho del componente actualizado debería verse así:
      const [getUserMessages, { error, called, loading, data }] = useGetUserMessagesLazyQuery()
      const userRole = `%${user.role}%`
    
      useEffect(() => {
        getUserMessages({
          variables: { userId: user?.id, userRole: userRole },
        })
      }, [user])
    

    Al hacer estos cambios, el usuario debería poder ahora obtener mensajes de un usuario con un uuid específico o un rol que coincida con el rol del usuario.

Comments are closed.