2013-10-08 17 views
6

で「のような」クエリを作成する方法、私のデータベースがある場合:例えばParse.com

{ 
    people: name: [{"first":"Billy", "last":"smith"}] 
}, 
{ 
    people: name: [{"first":"bob", "last":"smith"}] 
}, 
{ 
    people: name: [{"first":"thor", "last":"smith"}] 
}, 
{ 
    people: name: [{"first":"hobo", "last":"smith"}] 
} 

私はの効果に何か希望:query.like("b")をし、それが第1、第2、第4を返す必要がありdocs

Javascript APIにはこれがありますか?

+0

関連:https://www.parse.com/questions/are-like-regex-queries-possible-via-the-rest-api –

+0

したがって、Javascriptのquery.startsWith()関数は、 "ビリー"と "ボブ"。 "ホーボー"ではありません。その点では欠けています。 – bzupnick

答えて

8

contains(key, substring)メソッドは必要なものですが、これは2番目と4番目のドキュメントでのみ一致します。

検索が大文字と小文字を区別するためです。一般的な戦術は今、あなたはそれらすべてを見つけるためにquery.contains("search_name", searchString.toLowerCase())を使用することができます別のフィールドbefore save、例えば:

Parse.Cloud.beforeSave("people", function(request, response) { 
    request.object.set(
     "search_name", 
     request.object.get("first").toLowerCase() 
      + " " 
      + request.object.get("last").toLowerCase() 
    ); 
    response.success(); 
}); 

に検索可能なコンテンツを書くために、クラウドコードハンドラを追加することです。

最初の名前だけでなく最後の名前でも検索できるようにしたい場合は、別のフィールド(「search_first」)を追加するか、必要に応じて上記を修正します。

+0

私はその文書を失うことはありませんか? – bzupnick

+1

元の「最初」および「最後」のフィールドを保持し、これらの値のコピーを小文字に変換した追加の「search_name」フィールドを追加します。 –