我有一个名为" classA"的解析类。我想构建一个查询,我想在" classA"中搜索行。拥有某些" objectId"。我写了以下代码。但它总是返回一个ParseObjects的空列表。我已尝试在" classA"中存在单独的列。一直有空列表返回。请帮忙。
我之前在另一个班级" classB"在同一个应用程序内部并且完美运行。我也试过了,#34;试试"使用" query.find"阻止实现。那也返回空列表。提前致谢。请解释一下是什么错误。
需要更多代码段,请告知我们。
Button btn = (Button) findViewById(R.id.query_btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText objIdET= (EditText) findViewById(R.id.obj_id);
String objId= objIdET.getText().toString();
Log.d("check", objId); // Prints correct value here..
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("classA");
fridgeID.whereEqualTo("objectId", objId);
List<ParseObject> lp = new ArrayList<ParseObject>();
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, ParseException e) {
Log.d("#results", String.valueOf(objects.size()));
}
});
}
}
});
答案 0 :(得分:1)
将FridgeId
替换为query
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("classA");
query.whereEqualTo("objectId", objId);
List<ParseObject> lp = new ArrayList<ParseObject>();
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, ParseException e) {
Log.d("#results", String.valueOf(objects.size()));
}
});
答案 1 :(得分:0)
如果您拥有该行的objectId,请使用getInBackground()
。
ParseQuery<ParseObject> query = ParseQuery.getQuery("classA");
query.getInBackground(objId, new GetCallback<ParseObject>() {
public void done(ParseObject object, ParseException e) {
if (e == null) {
Log.d("#results", String.valueOf(objects.size()));
} else {
// Handle the error
}
}
}
如果您没有objectId并设置某些条件,请致电findInBackground()
。您也可以像这样在objectId字段上设置条件。
ParseQuery<ParseObject> query = ParseQuery.getQuery("classA");
query.whereEqualTo("objectId", objId);
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> objects, ParseException e) {
if (e == null) {
Log.d("#results", String.valueOf(objects.size()));
} else {
// Handle the error
}
}
}
答案 2 :(得分:0)
您将获得一个Parse对象的空列表,因为没有与该用户对应的任何行(您已登录)。
Parse.com使用名为ACL的字段实现其数据的隐私。因此,如果用户A向表中添加条目,则默认情况下,ACL将设置为用户A的读取+写入,而其他用户则不设置。因此用户B将无法找到userA的任何对象。
阅读更多内容:https://parse.com/docs/android/guide#security
如果要创建一种机制,只有属于某个组的用户才能读取+写入彼此的对象,您可以使用角色(解析功能)。
答案 3 :(得分:0)
在应用程序中初始化解析时,检查是否设置了正确的密钥。
答案 4 :(得分:0)
如果您想获取用户列表,但 ParseQuery.getQuery
不起作用 - 试试这个:
val query: ParseQuery<ParseUser> = ParseUser.getQuery()
query.findInBackground() {...}