cari

Rumah  >  Soal Jawab  >  teks badan

Prisma ORM tidak mempunyai kaedah Json string_contains untuk laluan asas

Saya cuba menapis medan jenis json yang mengandungi rentetan kerana saya ingin mencari semua kandungan json

this._prismaService.service.findMany({
          ...args,
          where: {
            OR: [
              {
                nameTranslatableJson: {
                  string_contains: filters.search,
                },
              },
            ],
          },
});

Tetapi penapis ini tidak berfungsi untuk saya, saya tidak dapat menentukan laluan kerana ia perlu menapis dari akar

Struktur json adalah seperti ini

{
  "defaultText": "Prueba???",
  "ES": "What???",
  "EN": "What???"
}

Bagaimana untuk menapis mana-mana kandungan json dari direktori akar atau adakah terdapat cara alternatif untuk melakukan penapisan

P粉988025835P粉988025835438 hari yang lalu625

membalas semua(1)saya akan balas

  • P粉262113569

    P粉2621135692023-09-22 00:52:31

    Jika anda ingin melakukan carian teks pada semua nilai medan JSON, anda biasanya perlu menggunakan fungsi atau pengendali khusus pangkalan data. Untuk PostgreSQL, anda boleh menggunakan jsonb_to_tsvector函数将JSONB数据转换为tsvector dan kemudian menggunakan fungsi carian teks penuh PostgreSQL.

    Berikut ialah contoh cara menggunakan pertanyaan SQL mentah dengan fungsi prisma.$queryRaw函数编写使用jsonb_to_tsvector:

    const searchResults = await this._prismaService.$queryRaw`
      SELECT *
      FROM "Service"
      WHERE to_tsvector('english', "nameTranslatableJson"::text) @@ plainto_tsquery('english', ${filters.search})
    `;

    balas
    0
  • Batalbalas