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

220
Vistas
Uso de conversión (::) de elementos de matriz con pg-promise

Tengo un dominio que representa una matriz de enteros, creado con CREATE DOMAIN x AS integer[] . Tengo un campo en una tabla que tiene tipo x[] , es decir, una matriz de matrices de enteros. He hecho esto (a diferencia de integer[][] ) para permitir matrices de longitud mixta (ver esta respuesta ).

Insertar la expresión {{1, 2}, {3, 4, 5}} se vería así:

 INSERT INTO table (column) VALUES (ARRAY[ARRAY[1, 2]::x, ARRAY[3, 4, 5]::x])

Sin el dominio (es decir, cuando la column es de tipo integer[][] ), puedo usar pg-promise para insertar la matriz multidimensional anterior:

 const arr = [[1, 2], [3, 4, 5]]; await db.query('INSERT INTO table (column) VALUES ($1)', arr);

Y selecciónalo:

 const result = await db.query('SELECT column FROM table'); result[0].column[1][2] // => 5

Pero esto, por supuesto, tiene la limitación mencionada al principio, que SQL (o al menos Postgres) no permite matrices multidimensionales con filas de diferentes longitudes.

Seleccionar una columna de tipo x[] con pg-promise de la misma manera que arriba da como resultado una cadena, e insertar una matriz sin formato (como arriba) arroja un error comprensiblemente ("la columna es de tipo x[] pero la expresión es de tipo entero[]"). Agregar ::x[] (es decir, INSERT INTO table (column) VALUES ($1::x[]) también arroja un error, "no se puede convertir el tipo entero a x", que también tiene sentido.

Entonces mi pregunta es, ¿cuál es la mejor manera de seleccionar e insertar campos que son matrices de un dominio con pg-promise? Miré el formato de tipo personalizado, pero no estoy seguro de que funcione para seleccionar. ¡Gracias!

about 4 years ago · Juan Pablo Isaza
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