我试图创建一个dynamic
过滤器,可以使用至少3个字母实现。我有很多要过滤的字段
作为一个例子,如果我试图通过email
找到用户,我希望能够键入"@gma"或者至少"gma"理想情况下,它应该返回包含指定过滤值的所有用户的数组。当搜索属性如firstName
等
时,这应该是相同的我目前的解决方案只适用于如果我提供一个完整的值,匹配我已经在我的数据库。例如test@gmail.com
对应email
,john
对应firstName
。我希望能够为后者输入jo
。
const regexPattern = new RegExp(["^", filterUsersByValue, "$"].join(""), "i");
const filteredU = UserModel.find({ [filterUsersBy]: regexPattern})
如果我理解正确,因为你使用的是JS,你可以创建find
对象像这样:
let findObj = {}
findObj[userKey] = {$regex:userFilter, $options:"i"}
const filteredU = UserModel.find(findObj)
创建如下的que对象:
const userFilter = "gma"
const userKey = "email"
let findObj = {}
findObj[userKey] = {$regex:userFilter,$options:"i"}
console.log(findObj)
什么是相同的,在这个查询