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.

Redis geoadd, problema de tipo.

Estoy tratando de usar la función geoAdd de Redis con el cliente de Node.js, pero parece que hay un problema con el tipo en TypeScript y no puedo hacer que funcione. El código actual es:

cache.geoAdd(KEY, position.longitude, position.latitude, courier_id)

Según lo que he leído en la documentación de Redis, esta debería ser la sintaxis correcta, pero me devuelve este error en TypeScript:

El tipo en la posición 2 en el código fuente no es compatible con el tipo en la posición 2 en el destino.
El tipo ‘string’ no se puede asignar al tipo ‘GeoMember | GeoMember[]’

Cuando reviso el tipo GeoMember en los módulos de Node, es un objeto con solo la propiedad ‘member’ {member: string}, por lo que no puedo entender cómo construir el comando en este caso, ya que hay muy pocos recursos en línea sobre Redis Geo. Si alguien tiene experiencia con esto, ¿podría explicar cómo logró hacer que este comando funcione?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el comando geoAdd en el cliente de node.js redis no está funcionando como se esperaba debido a un problema de compatibilidad de tipos con TypeScript.

    El mensaje de error sugiere que el segundo argumento proporcionado a la función geoAdd no es compatible con el tipo GeoMember esperado. El tipo GeoMember se define como un objeto con una única propiedad member que es de tipo cadena.

    Para solucionar este problema, debes intentar modificar tu código para crear explícitamente un objeto GeoMember como segundo argumento de la función geoAdd. Aquí tienes un ejemplo:

    const member = { member: courier_id };
    cache.geoAdd(KEY, { longitude: position.longitude, latitude: position.latitude, member });
    

    Este código crea un objeto member con la propiedad member requerida y lo pasa como parte de un objeto de opciones para la función geoAdd.

    Alternativamente, si estás utilizando una versión del cliente redis que admite directamente el tipo GeoMember, puedes intentar actualizar tus dependencias para usar esa versión.

    ¡Espero que esto te ayude!

Comments are closed.