Sequelize查询字符串前缀/以...开头

3
我正在构建一个自动填充函数,它接受一个字符串输入并返回一组字符串建议。
Sequelize的`iLike:query`将返回出现查询字符串的所有字符串。我希望优先选择以查询字符串为前缀的字符串。例如,当 `query='sh'` 时,结果应该返回以 `sh` 开头的字符串,而不是包含 `sh` 的任何位置的字符串。
在从数据库接收数据后,这相对简单实现,但我想知道是否有办法通过sequelize在查询数据库时完成这个任务?如果可以,怎么做?
DB的大小将在10,000到100,000个字符串之间,每个字符串都不超过几个单词(确切地说是公司名称)。
可选问题:通常情况下,DB具有高性能,这种情况下是否会有明显差异?或者我只需从DB收集所有数据,并在之后通过vanilla JS应用其他过滤器即可。
let suggestions = yield db.Company.findAll({
  limit: 7,
    where: {
      company_name: {
        $iLike: '%'+this.data.query
      }
    }
 })
1个回答

5

看起来这很简单!'%' 的作用类似于正则表达式中的 * 。因此,query + '%' 返回任何查询以 query 为前缀的结果。

let suggestions = yield db.Company.findAll({
    limit: 5,
    where: { $or: [
      { stock_ticker: { $ilike: query + '%' } },
      { company_name: { $ilike: query + '%' } }
    ]},
    order: '"volume" DESC'
  })

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接