Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

203
Views
La búsqueda de Redis-om no puede encontrar la clave después de la actualización

Tengo un comportamiento extraño con mi aplicación Redis-OM, entiendo que todavía es una versión muy BETA del software, pero solo quería asegurarme de que no estaba haciendo algo tonto (que podría ser)

Así que estoy configurando una aplicación para mantener una lista de reproducción de ID de video dentro de una sala que almaceno temporalmente en una base de datos en la nube de Redis.

Tengo una función que crea una sala, una que obtiene los detalles de la sala (todo lo que hay actualmente en la sala) y otra que agrega un nuevo video a la lista de reproducción dentro de esa sala. ( ver más abajo ) - NOTA: la variable de datos dentro de createRoom(data) es solo una cadena de la ID de la habitación

 class Room extends Entity {} let schema = new Schema( Room, { code: { type: 'string' }, playlist: { type: 'array', videos: { type: 'object', }, }, }, { dataStructure: 'JSON', } ); export async function createRoom(data) { await connect(); const repository = new Repository(schema, client); const room = repository.createEntity(data); const id = await repository.save(room); await client.execute(['EXPIRE', `Room:${id}`, 43200]); return id; } export async function getRoom(code) { await connect(); const repository = new Repository(schema, client); const room = await repository .search() .where('code') .equals(code) .returnFirst(); return room; } export async function addVideoToRoom(code, videoDetails) { const room = await getRoom(code); await room.playlist.push(videoDetails); await connect(); const repository = new Repository(schema, client); const id = await repository.save(room); return id; }

El principal problema que tengo es agregar un segundo video a la lista de reproducción. Lo que sucede es

  • Crear sala: agrega una nueva sala a la base de datos
  • Buscar vídeo
  • Haga clic para agregar video a la base de datos (el video se agregó correctamente)
  • Haga clic para agregar un segundo video a la base de datos (falla porque getRoom(code) falla; devuelve nulo)

Esto funcionaba ayer, sin embargo, no estoy seguro de por qué ya no funciona.

Si alguien tiene alguna idea de por qué podría ser, hágamelo saber, tengo la sensación de que puede ser cómo estoy manejando clientes o índices con Redis, por lo que también he incluido mis funciones para los que se encuentran a continuación.

 const client = new Client(); async function connect() { if (!client.isOpen()) { await client.open(process.env.REDIS_URL); } } export async function createIndex() { await connect(); const repository = new Repository(schema, client); await repository.dropIndex(); await repository.createIndex(); }

Muchas gracias a los programadores de Stack. Si estoy siendo muy tonto, me disculpo.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Redis OM para Node.js no admite objetos anidados ni un tipo de "objeto" dentro del esquema. Los tipos válidos son 'cadena', 'número', 'booleano' y 'matriz'. Las matrices son solo matrices de cadenas. El resto se explica por sí mismo.

Si desea tener una sala que tenga varios videos, debe definir una entidad de sala, tal vez con una lista de reproducción que se define como una matriz no de objetos, sino de identificadores de video.

Los detalles sobre esto se pueden encontrar en el LÉAME .

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!