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

85
Views
Problema al concatenar cadenas usando literales de plantilla de JavaScript

Estoy usando la biblioteca prisma.io y tengo problemas para trabajar con literales de plantilla para hacer lo que quiero. Tal vez no los entiendo lo suficientemente bien.

tengo esta llamada:

 const result = await prisma.$queryRaw`SELECT * FROM User WHERE active = ${activeSetting}`

Y esto funciona exactamente como yo quiero.

Sin embargo, quiero agregar opcionalmente una cadena al final sin tener que rehacer la declaración completa.

Es decir, quiero algo como:

 let result; if (orderBy === "ASC") { const result = await prisma.$queryRaw`SELECT * FROM User WHERE active = ${activeSetting} ORDER BY ASC` } else if { const result = await prisma.$queryRaw`SELECT * FROM User WHERE active = ${activeSetting} ORDER BY DESC` }

Básicamente, no quiero tener que completar declaraciones que comiencen con const result = await . Me doy cuenta de que este es un ejemplo corto, pero mi problema es cuando tengo declaraciones SQL bastante largas y me encuentro cortando y pegando un SQL enorme que es propenso a errores.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Puedes usar un operador ternario así:

 const result = await prisma.$queryRaw`SELECT * FROM User WHERE active = ${activeSetting} ORDER BY ${orderBy === 'ASC' ? 'ASC' : 'DESC'}`

Pero es mejor no escribir cadenas de SQL sin procesar porque podría quedar vulnerable a la inyección de SQL.

about 4 years ago · Juan Pablo Isaza Report

0

Me doy cuenta de que podría haber hecho una declaración SQL mucho más grande, así como concatenar fragmentos de código más grandes y eso habría aclarado el problema. Gracias a @CertainPerformance y @Phil por las ideas.

Esto es lo que realmente estaba buscando que resuelve mi mayor problema y todavía me mantiene a salvo, estoy bastante seguro.

 const orderByAsc = Prisma.sql`ORDER BY ASC`; const orderByDesc = Prisma.sql`ORDER BY DESC`; const result = await prisma.$queryRaw`SELECT * FROM User WHERE active = ${activeSetting} ${ orderBy === 'ASC' ? orderByAsc : orderByDesc }`;

Y también me permite poner expresiones en mis subcláusulas si es necesario.

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