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

时间:2016-07-12 18:06:05

标签: javascript postgresql sequelize.js

我正在构建一个自动填充函数,它接受一个字符串输入并返回一个字符串建议列表。

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
      }
    }
 })

1 个答案:

答案 0 :(得分:4)

似乎这很容易! '%'的行为类似于正则表达式中的*。因此query + '%'会返回查询为前缀的任何结果。

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