我正在构建一个自动填充函数,它接受一个字符串输入并返回一个字符串建议列表。
Sequelize的iLike:query
返回查询字符串出现的每个字符串。我想赞成查询是前缀的字符串。例如,当query='sh'
时,结果应该返回以sh
开头的字符串,而不是在字符串中的任何位置都有sh
。
从DB接收数据后这是相对简单的,但是我想知道在查询数据库时是否有办法通过sequelize实现这一点?如果是这样的话?
数据库大小介于10,000到100,000个字符串之间,不超过少数几个字(确切地说是公司名称)。
可选问题:DB通常具有优于一般编写代码的性能,在这种情况下是否应该有明显的差异?或者我应该只收集数据库中的所有数据,并在通过vanilla JS后应用其他一些过滤器。
let suggestions = yield db.Company.findAll({
limit: 7,
where: {
company_name: {
$iLike: '%'+this.data.query
}
}
})
答案 0 :(得分:4)
似乎这很容易! '%'
的行为类似于正则表达式中的*
。因此query + '%'
会返回查询为前缀的任何结果。
let suggestions = yield db.Company.findAll({
limit: 5,
where: { $or: [
{ stock_ticker: { $ilike: query + '%' } },
{ company_name: { $ilike: query + '%' } }
]},
order: '"volume" DESC'
})