我正在向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;
}
});
为什么?
答案 0 :(得分:0)
根据Parse API
here,ParseQuery
:
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;
}
});