私はPostgresでPrismaを使用しています。基礎となるテーブルでサポートされていないtsvector型を使用しているため、特定のクエリに$queryRawを使用する必要があります。このクエリでは、'in'リスト内の項目をパラメータ化する必要がある'in'ステートメントも使用する必要があります。私はこれを試しました
const ids = [41, 55]
const result = await prisma.$queryRaw`select * from users where id in (${ids})`;
しかしカーネルパニックが発生します
PANIC in /root/.cargo/git/checkouts/rust-postgres-dc0fca9be721a90f/8a61d46/postgres-types/src/lib.rs:762:18 expected array type
私もこれを試してみました...
const result = await prisma.$queryRaw`select * from users where id in (${ids.join(',')})`;
しかし、このエラーが発生します...
Raw query failed. Code: `22P03`. Message: `db error: ERROR: incorrect binary data format in bind parameter 1`
Prisma で使用されていると思われる sql-template-tag ライブラリにはこれをサポートする方法があるため、インストールしてインポートした後、これを試しました。
const result = await prisma.$queryRaw`select * from users where id in (${join(ids)})`;
しかし、同じエラーが発生します。
これを実現するにはどうしたらいいでしょうか?
ベストアンサー1
RTFM:https://www.prisma.io/docs/concepts/components/prisma-client/raw-database-access#タグ付きテンプレートヘルパー
import { Prisma } from "@prisma/client";
const ids = [1, 3, 5, 10, 20];
const result = await prisma.$queryRaw`SELECT * FROM User WHERE id IN (${Prisma.join(
ids
)})`;