7

たとえば、私のデータベースが次の場合:

{
    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")そして、最初、2番目、4番目のドキュメントを返すようにします

Javascript API にこのようなものはありますか?

4

1 に答える 1

10

メソッドはあなたが望むものですが、これcontains(key, substring)は 2 番目と 4 番目のドキュメントでのみ一致することに注意してください。

その理由は、検索では大文字と小文字が区別されるためです。一般的な戦術は、Cloud Code ハンドラを追加して、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();
});

これで、 を使用query.contains("search_name", searchString.toLowerCase())してそれらをすべて見つけることができます。

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

于 2013-10-08T22:39:07.750 に答える