簡體   English   中英

如何在查詢中包含自定義 SELECT

[英]How can I include custom SELECTs in my queries

對於我目前正在制作的博客網站,我需要從數據庫中檢索最近的文章以在博客的主頁上顯示它們。 我不想檢索所有 10 篇文章的內容,而是檢索它們的開頭。

在Postgres里,我會發現所有的文章,您可以按照一個created_at領域,並SELECT與內容SELECT left(content, 15)讓我的文章內容的第15個字符。

如何使用 Prisma 實現這一目標?

我試過了

  return prisma.article.findMany({
    orderBy: {
      createdAt: 'desc',
    },
    select: {
      createdAt: true,
      id: true,
      title: true,
      updatedAt: true,
      content: 'left(content, 15)' as any
    },
  });

但它告訴我它需要一個布爾值而不是字符串。

謝謝你的幫助。

您可以按照 Ryan在這里建議的操作(第二個建議是您引入一個新字段,可能是像excerpt類的excerpt ),或者您可以像這樣執行原始查詢

import { Article } from '@prisma/client';

type CustomArticle = Pick<Article, 'id' | 'title' | 'content' | 'createdAt' | 'updatedAt'>;

const prisma = /* your prisma client */
const result = await prisma.$queryRaw<CustomArticle[]>`SELECT id, title, LEFT(content, 15) as content, createdAt, updatedAt FROM Article;`

您可以這樣做,但我建議您引入一個新字段,因為LEFT(content, 15)仍將獲取整個內容,但會刪除第 15 個字符之后的所有內容。

在這個例子中,我使用 TypeScript 來確定$queryRaw的泛型類型參數T和一個CustomArticle ,它只選擇我們需要的相關信息,以便我們可以有一個類型化的返回值。

Prisma 目前無法直接實現這一點,因此有兩種解決方法:

  1. 獲取內容,然后只在前端顯示前 15 個字符。

  2. 創建只是持有的前15個字符另一個字段content ,並選擇相應的字段。

我們在這里有一個請求,所以如果你能為此添加一個 👍 以便我們可以查看優先級,那就太好了。

暫無
暫無

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

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