Prisma ORM verfügt über keine Json-Methode „string_contains' für den Basispfad
P粉988025835
P粉988025835 2023-09-21 13:41:24
0
1
646

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粉988025835
P粉988025835

Antworte allen(1)
P粉262113569

如果您想在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})
`;
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage