Grapeoff
@Grapeoff
В чём концепция...?

По какой причине Prisma не хочет строить данный запрос?

if (typeof clientId !== 'number') {
  throw new ApiError('clientId must be a number')
}

const transactions = await prisma.$queryRaw(Prisma.sql`
      SELECT currency, sum("fromAmount"), sum("toAmount"), account."createdAt"
      FROM "Transaction"
               LEFT JOIN public."Account" account on "Transaction"."fromAccountId" = account.id
      WHERE type = 'CARD_OUT'
        AND "clientId" ${clientId ? `= ${clientId}` : `IS NULL`}
        AND account."clientId"
      GROUP BY currency, "fromAmount", "toAmount", account."createdAt"
`)

Данный код падает с ошибкой

PrismaClientKnownRequestError: 
Invalid `prisma.$queryRaw()` invocation:


Raw query failed. Code: `42601`. Message: `ERROR: syntax error at or near "$1"`
    at si.handleRequestError (C:\Users\meebo\WebstormProjects\back-v2.g01.gg\node_modules\@prisma\client\runtime\library.js:125:6817)
    at si.handleAndLogRequestError (C:\Users\meebo\WebstormProjects\back-v2.g01.gg\node_modules\@prisma\client\runtime\library.js:125:6151)
    at si.request (C:\Users\meebo\WebstormProjects\back-v2.g01.gg\node_modules\@prisma\client\runtime\library.js:125:5859)
    at async l (C:\Users\meebo\WebstormProjects\back-v2.g01.gg\node_modules\@prisma\client\runtime\library.js:130:9805)
    at async Object.GET (file:///C:/Users/meebo/WebstormProjects/back-v2.g01.gg/src/endpoints/admin/stats.js:18:24)
    at async file:///C:/Users/meebo/WebstormProjects/back-v2.g01.gg/src/app.js:359:17

Причём такой код не работает вообще ни с какими шаблонными строками, даже если вместо этого тернарного оператора туда какой-нибудь примитив засунуть.

Вот можно попробовать лично построить данный запро...

Хотя всё по документации: https://www.prisma.io/docs/orm/prisma-client/queri...
  • Вопрос задан
  • 186 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Zerg89
Смотрите внимательней на кавычки и другие разделители
Ответ написан
@AleshaIdetRvat
Вместо queryRaw используй queryRawUnsafe

Вот тут на примерах объясняют как это работает
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы