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

508
Visualizações
NestJS Postgres Prisma: el tipo de error 'cadena' no se puede asignar al tipo de parámetro 'TemplateStringsArray | Sql'

Estoy tratando de construir un servicio NestJS Monorepo utilizando la arquitectura de microservicios con PostgreSQL como base de datos, Prisma como ORM y TypeScript como idioma principal. Pero sigo recibiendo el siguiente error cuando intento ejecutar una consulta de Postgres.

src/infrastructure/persistence/work.repository.postgres.ts:188:7 - error TS2345: el argumento de tipo 'cadena' no se puede asignar al parámetro de tipo 'TemplateStringsArray | Sql'.

Revisé los tipos de datos y parecen ser compatibles.

Por favor ayúdame a arreglar esto.

Pila: TypeScript, PostgreSQL, Node.JS, Express y NestJS.

¡Gracias por adelantado!

 async findWriterNumber(writerAddress: string): Promise<number> { const maxNumber = await this.prismaService.$queryRaw<{ max: number; }>( `SELECT coalesce(max('writerNumber') + 1, 0) as max FROM "Work" LEFT OUTER JOIN "WriterID" ON "Work"."id" = "WorkID"."workId" AND "WorkID"."address" = '${writerAddress}'`, ); return maxNumber[0].max; }
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Encontré una solución simple:

Quite ( ) alrededor de la instrucción sql.

 async findWriterNumber(writerAddress: string): Promise<number> { const maxNumber = await this.prismaService.$queryRaw<{ max: number; }> `SELECT coalesce(max('writerNumber') + 1, 0) as max FROM "Work" LEFT OUTER JOIN "WriterID" ON "Work"."id" = "WorkID"."workId" AND "WorkID"."address" = '${writerAddress}'`; return maxNumber[0].max; }

Una declaración preparada traducirá la consulta a "seleccione coalesce... from work where... address=$1" y envíe $1 como parámetro, por lo que no necesita envolverlo entre comillas.

over 4 years ago · Santiago Trujillo Relatório

0

Otra solución es usar el ayudante Prisma.sql :

 const maxNumber = await this.prismaService.$queryRaw<{ max: number; }>( Prisma.sql`SELECT coalesce(max('writerNumber') + 1, 0) as max FROM "Work" LEFT OUTER JOIN "WriterID" ON "Work"."id" = "WorkID"."workId" AND "WorkID"."address" = '${writerAddress}'`, ); return maxNumber[0].max;
over 4 years ago · Santiago Trujillo 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