Prisma ORM沒有基本路徑的Json string_contains方法
P粉988025835
P粉988025835 2023-09-21 13:41:24
0
1
647

我正在嘗試對一個json類型的字段進行包含字串的過濾,因為我想搜尋所有的json內容

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

但是這個過濾器對我來說不起作用,我不能指定一個路徑,因為它必須從根目錄進行過濾

json的結構是這樣的

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

如何從根目錄過濾任何json內容或有一個替代方法來進行過濾

P粉988025835
P粉988025835

全部回覆(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})
`;
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板