use*_*225 6 node.js typeorm nestjs node.js-typeorm
我在我的node.js 项目中使用TypeOrm。我知道从数据库中查找记录我可以这样做:
userRepository.find({ where: { firstName: "John" } });
Run Code Online (Sandbox Code Playgroud)
它执行查询:
SELECT * FROM "user"
WHERE "firstName" = 'John'
Run Code Online (Sandbox Code Playgroud)
但现在,仅当存在该值时,我才需要在“where”条件中添加另一个归档检查。例如,我还想检查company
SQL“where”条件,但前提是company
存在值。
我尝试了以下操作,我想知道我可以通过给出默认的空字符串(''
如果company
不存在)然后将其传递给find
函数来执行以下操作where
吗?
const company = params.company ? params.company : '';
userRepository.find({ where: { firstName: "John", company: company } });
Run Code Online (Sandbox Code Playgroud)
但它仍然会添加"company"=''
到最终的 SQL 查询中,这是不好的。我想知道 TypeORM 中是否有一个现有函数可以动态决定仅在where
存在值而不是空字符串时添加更多条件?
PZB*_*ird 14
你可以使用破坏来达到目的。喜欢:
userRepository.find({
where: {
firstName: "John",
...(params?.company && { company: params.company }),
}
});
Run Code Online (Sandbox Code Playgroud)
所以,如果params.company
是undefined
(或空字符串)那么
...(undefined && { company: undefined })
Run Code Online (Sandbox Code Playgroud)
返回undefined
并为你带来毁灭...{}
。
如果params.company
包含一些值,则
...('company' && { company: 'company' })
Run Code Online (Sandbox Code Playgroud)
返回...{company: 'company'}
并在您所在的位置销毁它。
例子:
userRepository.find({
where: {
firstName: "John",
...(params?.company && { company: params.company }),
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13041 次 |
最近记录: |