Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

191
Vistas
¿Cómo actualizar datos con valores duplicados usando Knex?

Digamos que tengo esta matriz de datos:

 const ids = [ '7d8206d2-74bc-4b90-a237-37f92486cde4', 'e594fe7f-d529-4a2f-ab24-ffc4e102268c', '7d8206d2-74bc-4b90-a237-37f92486cde4' ]

Como puede ver, hay ID duplicados y cuando quiero actualizarlo así:

 await knex("products") .increment("purchasesCount") .whereIn("id", ids)

En mi columna de purchasesCount , puedo ver los valores (1, 1) , pero debería ser (2, 1) debido a las identificaciones duplicadas. ¿Hay alguna forma de arreglarlo?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La solución más sencilla es emitir una consulta por cada compra, de la siguiente manera:

 for (const id of ids) { await knex("products").increment("purchasesCount").where({ id: id }); }

Si esto es imposible por alguna razón (por ejemplo, el rendimiento), entonces tiene 2 opciones:

  1. Realice depósitos en memoria y cuente cuántos de cada ID obtuvo. Luego, haga un montón de incrementos con .whereIn("id", idsWithThisCountOnly) . Entonces, en el ejemplo anterior, haría 2 actualizaciones, una para todas las identificaciones que se encontraron solo una vez en la matriz y otra para todas las identificaciones que se duplicaron. Probablemente necesitará un Map of id => count para contar duplicados, y deberá invertirlo más tarde en la forma de count => idsWithThisCountOnly[] .
  2. No almacene recuentos en la base de datos en absoluto. Almacene solo los ID, duplicados y use GROUP BY con COUNT cuando recupere los datos. Esto debería ofrecer un mejor rendimiento de escritura (las INSERCIONES suelen ser más rápidas que las ACTUALIZACIONES), pero con un mayor tamaño de almacenamiento y lecturas más lentas.

La opción 2 puede ser preferible si ya tiene una tabla de "transacciones" o "ventas" con elementos de línea y accede a los datos de resumen con poca frecuencia.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda