Android - ParseQuery <parseobject> whereMatches返回空列表</parseobject>

时间:2014-12-17 04:55:18

标签: android parse-platform

我正在向parse.com服务器写一个查询。

当我使用whereContainedIn时,我得到一个List。

final ArrayList<String> searchList = new ArrayList<String>(1);
                    String searchRegexText = mSearchEdit.getText().toString();
                    searchList.add(searchRegexText);
                    ParseQuery<ParseObject> query = ParseQuery.getQuery(TABLE_PRODUCTS);
                    query.whereContainedIn(KEYWORDS, searchList);
                    query.findInBackground(new FindCallback<ParseObject>() {
                        @Override
                        public void done(List<ParseObject> list, ParseException e) {
                            List<ParseObject> temp =  list;
                        }
                    });

当我使用whereMatches时,我得到一个空列表:

                    String searchRegexText = mSearchEdit.getText().toString();
                    ParseQuery<ParseObject> query = ParseQuery.getQuery(TABLE_PRODUCTS);
                    query.whereMatches(KEYWORDS, searchRegexText);
                    query.findInBackground(new FindCallback<ParseObject>() {
                        @Override
                        public void done(List<ParseObject> list, ParseException e) {
                            List<ParseObject> temp =  list;
                        }
                    });

为什么?

2 个答案:

答案 0 :(得分:0)

根据Parse API hereParseQuery

whereContainedIn

public ParseQuery<T> whereContainedIn(String key,
                                      Collection<? extends Object> values)

向查询添加约束,该约束要求特定键值包含在提供的值列表中。

whereMatches

public ParseQuery<T> whereMatches(String key,
                                  String regex)

添加正则表达式约束,以查找与提供的正则表达式匹配的字符串值。对于大型数据集,这可能会很慢。

显然,第二个需要Regex (Regular Expressions)

答案 1 :(得分:0)

我认为您正在尝试查询错误。如果您只是尝试针对单个值查询特定键,则可以简单地执行此操作。

String searchRegexText = mSearchEdit.getText().toString();
ParseQuery<ParseObject> query = ParseQuery.getQuery(TABLE_PRODUCTS);
query.whereEqualTo(KEYWORDS, searchRegexText);
query.findInBackground(new FindCallback<ParseObject>() {
    @Override
    public void done(List<ParseObject> list, ParseException e) {
        List<ParseObject> temp =  list;
    }
});

我假设'KEYWORDS'是一个字符串变量,用于定义您要搜索的列名。

修改

如果您尝试查找以特定字符串开头的所有对象,则可以使用此代码:

String searchRegexText = mSearchEdit.getText().toString();
ParseQuery<ParseObject> query = ParseQuery.getQuery(TABLE_PRODUCTS);
query.whereStartsWith(KEYWORDS, searchRegexText);
query.findInBackground(new FindCallback<ParseObject>() {
    @Override
    public void done(List<ParseObject> list, ParseException e) {
        List<ParseObject> temp =  list;
    }
});