![](/img/trans.png)
[英]How can I keep the same position on my drop down menu once a user selects
[英]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 目前無法直接實現這一點,因此有兩種解決方法:
獲取內容,然后只在前端顯示前 15 個字符。
創建只是持有的前15個字符另一個字段content
,並選擇相應的字段。
我們在這里有一個請求,所以如果你能為此添加一個 👍 以便我們可以查看優先級,那就太好了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.