Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

196
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda