![](/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.