【发布时间】:2022-07-21 00:01:56
【问题描述】:
我的目标是访问 api 端点,只传递一个查询变量,并尝试根据单个变量过滤掉任何列。
我在数据库中有多个用户,例如:
{
id: 1,
email: 'test+1@test.com',
username: 'test',
phone_number: '+651231231',
skillsets: 'Drawing, cooking',
hobby: 'Sleeping',
},
{
id: 2,
email: 'test+2@test.com',
username: 'test 2',
phone_number: '+6512312311231',
skillsets: 'Drawing, cooking',
hobby: 'Drawing',
}
我的函数/查询
let users = this.repo.createQueryBuilder('user');
if (query && query !== '') {
users = users
.where('user.email like :email', { email: `%${query}%` })
.orWhere('user.username like :username', {
username: `%${query}%`,
})
.orWhere('user.phone_number like :phone_number', {
phone_number: `%${query}%`,
})
.orWhere('user.skillsets like :skillsets', {
phone_number: `%${query}%`,
})
.orWhere('user.hobby like :hobby', { hobby: `%${query}%` });
}
return users.getMany();
我的 api 端点类似于
/api/users?query=Sleeping
我无法通过电子邮件以外的任何其他方式进行过滤,我认为是因为初始位置,但我不完全确定如何满足这种情况。
如果有人能指出正确的方向,我将不胜感激。
【问题讨论】:
-
你找到解决办法了吗?
标签: node.js typescript nestjs typeorm