【发布时间】:2023-02-10 15:02:32
【问题描述】:
我正在使用 prisma 与 db、嵌套关系等进行通信。
我有多个页面请求的资源。每个页面都需要来自资源的不同数据集,因此每个页面都会发送不同的查询参数。简化的例子是:一页需要价格和名称,另一页需要价格、名称和收藏。
示例查询将是
prisma.product.findMany({
where: {
...(collectionName ? { collection: {
is: {
collectionName,
},
} } : {}),
...(productName ? { productName } : {}),
},
...(select ? { // checking if its array and mapping it is omitted for the example
select: {
[select]: true, // no way to select fields from relation
} } : {}),
});
但是随着我添加使用该资源的新页面,添加越来越多的过滤器和/或selects,查询变得更加复杂,如果不使用selects,页面最终会请求-接收不必要的数据。
感觉相当复杂,好像有办法让它变得更好,比如将端点拆分为多个或从前端发送整个Prisma.ProductFindManyArgs。
如何降低复杂性并提高可重用性?
更新.从前端发送整个东西是个好主意,就像在 GraphQL 中所做的那样吗?我的意思是,在 GraphQL 中,您可以准确发送您想要的字段和附加数据,例如页面和每页的文档数量(用于分页)。所以我在想是否可以只发送整个对象,包含提供我需要的数据所需的所有信息(where、select、include、take、skip、 ETC。)?
【问题讨论】:
标签: api rest prisma api-design