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”条件中添加另一个归档检查。例如,我还想检查companySQL“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 次 |
| 最近记录: |