簡體   English   中英

對於 Prisma Client 連接查詢,是否可以將深度嵌套的字段移動到結果的頂層?

[英]For Prisma Client join queries is it possible to move deeply nested fields to top level of result?

Prisma 是否能夠將嵌套字段從另一個表連接移動到結果的頂層,如扁平化視圖? 我想將結果 JSON 放入前端表中,而無需挖掘嵌套對象並構建另一個 object。

例如,我想復制這種行為,我可以從不同的表(用戶和學校的列)中挑選列。 目前我使用類似 SQL 的原始查詢,但是我想知道是否可以僅使用 Prisma API:

SELECT 
u.id
, u.email
, s.school_name
FROM "User" AS u
JOIN "UserSchool" AS us ON us.user_id = u.id
JOIN "School" AS s ON s.id = us.school_id
id | email              | school_name
123| student1@email.com | mount high

I want JSON that looks like this:
{
        "id": "1",
        "email": "student1@email.com",
        "school_name": "mount high",
}

如果我在 Prisma 中這樣做,我需要將 go 放入多層嵌套對象中,以便在另一個表上獲得相同的列名,例如user[user_school][schoo][school_name] 這需要額外的工作來遍歷我的所有結果,從嵌套的 object 中提取,並構建另一個 object。這個例子還不錯,但我有更多的連接和深層嵌套的對象來解決我的實際問題(很多關聯/查找表). 我已經嘗試使用select並將其include在我的連接中,但它們的結構是嵌套的 JSON。

users = await prisma.user.findMany({
        include: {
          user_school: {
            include: {
              school: true,
            },
          },
        },
{
        "id": "1",
        "email": "student1@email.com",
        "user_school": [
            {
                "id": 1,
                "user_id": "1",
                "school_id": "1",
                "school": {
                    "id": 1,
                    "school_name": "mountain high",
                }
            }
        ],
}

到目前為止,不可能將結果拉平。

實現這一目標的唯一方法是使用您提到的rawQuery

但是,現有的功能請求討論了通過提供選項flatten:true來展平結果。 如果您可以在那里提及您的用例並添加評論,這將有助於 Prisma 的產品和工程團隊確定其優先級。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM