Prisma ORM n'a pas de méthode Json string_contains pour le chemin de base
P粉988025835
P粉988025835 2023-09-21 13:41:24
0
1
602

J'essaie de filtrer un champ de type json qui contient des chaînes car je souhaite rechercher tout le contenu json

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

Mais ce filtre ne fonctionne pas pour moi, je ne peux pas spécifier de chemin car il doit filtrer depuis la racine

La structure de json est comme ça

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

Comment filtrer tout contenu json du répertoire racine ou existe-t-il un autre moyen de filtrer

P粉988025835
P粉988025835

répondre à tous(1)
P粉262113569

Si vous souhaitez effectuer une recherche de texte sur toutes les valeurs d'un champ JSON, vous devez généralement utiliser une fonction ou un opérateur spécifique à la base de données. Pour PostgreSQL, vous pouvez utiliser jsonb_to_tsvector函数将JSONB数据转换为tsvector puis utiliser la fonctionnalité de recherche en texte intégral de PostgreSQL.

Voici un exemple d'utilisation d'une requête SQL brute avec la fonction 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})
`;
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!