如何有条件地调用“where”子句?棱镜

Ιησ*_*αυή 7 prisma

如何在prisma中有条件地过滤记录?例如,我有一个变量sortByYear可以包含undefinedinteger

我只是想问一下有没有办法重构下面的实现。我尝试查看他们的文档,但找不到。

let result = [];

if (sortByYear) {
    result = await prisma.project.findMany({
        where: { provider_id: 50 }
    })
} else {
    result = await prisma.project.findMany()    
}
Run Code Online (Sandbox Code Playgroud)

在 Laravel 中,我们可以通过使用子句来重构它when,该子句在执行查询之前首先检查变量。Laravel When 子句

Iro*_*ife 18

您可以使用扩展语法操作和三元操作的组合来完成此操作:

const result = await prisma.project.findMany({
  where: {
    ...(sortByYear ? { provider_id: 50 } : {}),
  },
});
Run Code Online (Sandbox Code Playgroud)

传播语法:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax

条件三元:
https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator