suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Prisma ORM verfügt über keine Json-Methode „string_contains“ für den Basispfad

Ich versuche, ein Feld vom Typ JSON zu filtern, das Zeichenfolgen enthält, weil ich den gesamten JSON-Inhalt durchsuchen möchte

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

Aber dieser Filter funktioniert bei mir nicht, ich kann keinen Pfad angeben, da vom Stamm aus gefiltert werden muss

Die Struktur von JSON ist wie folgt

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

So filtern Sie JSON-Inhalte aus dem Stammverzeichnis oder gibt es eine alternative Möglichkeit zum Filtern

P粉988025835P粉988025835439 Tage vor630

Antworte allen(1)Ich werde antworten

  • P粉262113569

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

    如果您想在JSON字段的所有值上执行文本搜索,通常需要使用特定于数据库的函数或运算符。对于PostgreSQL,您可以使用jsonb_to_tsvector函数将JSONB数据转换为tsvector,然后使用PostgreSQL的全文搜索功能。

    以下是如何使用prisma.$queryRaw函数编写使用jsonb_to_tsvector函数的原始SQL查询的示例:

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

    Antwort
    0
  • StornierenAntwort