2017-03-22 9 views
0

私は名前に基づいてユーザーを検索しようとしています。名前がファーストネームから与えられていても、ファーストネームの文字列を検索しなかった場合、完全に検索します。第1と第2の両方がスペースで区切られた1つの値に保存されます(例: "John Smith")。 "john"や "jo"などで検索するとレコードを取得しますが、そのスミスなら何も検索しません。 コードクエリで文字列のFirebase "like"検索

var ref = firebase.database().ref().child('User').orderByChild("name").startAt(searchString).endAt(searchString + "\uf8ff"); 
    $scope.usercollection = $firebaseArray(ref); 
+0

行動が予想される上で見つける:Firebaseデータベースのクエリは、文字列の先頭から検索することができます。 'contains()'演算子は実行できません。 http://stackoverflow.com/questions/22506531/how-to-perform-sql-like-operation-on-firebaseを参照してください。 Firebaseはまた、クラウド機能との統合を発表しました。この機能により、Googleのインフラストラクチャを通じて検索インデックスを実行できます。検索ユースケースはこちらをご覧ください:https://firebase.google.com/docs/functions/use-cases#other_ways_to_integrate_with_third-party_services_and_apis –

答えて

3

あなたが唯一の結果はJ、城、JOH、ジョンなどで始まるを取得することを正常です... startAt方法は、「指定された出発点でクエリを作成します」。そこで、あなたのsearchString変数がどのようにを開始するかを調べます。

現在、Firebseには全文検索メカニズムはありません。あなたはウェブいくつかの可能性、そのような仕組みを実装するために、例えば:

https://firebase.googleblog.com/2014/01/queries-part-2-advanced-searches-with.html

http://firebase.github.io/flashlight/