2016-07-12 20 views
1
で開始する

文字列入力を受け取り、文字列候補のリストを返す自動入力関数を構築しています。クエリ文字列の接頭辞を並び替え/

SequelizeのiLike:queryは、照会された文字列が現れるすべての文字列を返します。私は、クエリがプレフィックスである文字列を好むと思います。たとえば、query='sh'の場合、結果はshの代わりにshで始まる文字列を返します。

これはDBからデータを受け取った後に行うのが比較的簡単ですが、DBを照会する際に後継でこれを達成する方法があるのだろうかと思っていましたか?もしそうなら、どのように?

DBサイズは、10,000文字から100,000文字までの文字列(会社名が正確であること)を超えない文字列です。

オプションの質問:DBは通常、一般的に書かれたコードよりも優れたパフォーマンスを備えていますが、この状況では目立つ違いがあるはずです。または、私はDBからすべてのデータを収集し、vanilla JS経由でいくつかの他のフィルタを適用する必要があります。

let suggestions = yield db.Company.findAll({ 
    limit: 7, 
    where: { 
     company_name: { 
     $iLike: '%'+this.data.query 
     } 
    } 
}) 

答えて

2

これは非常に簡単ですね! '%'は、正規表現の*のように動作します。したがって、query + '%'は、クエリが接頭辞である場合に結果を返します。

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