Java 对ParseObject的查询
我正在尝试使用解析查询获取对象 这是我的代码:Java 对ParseObject的查询,java,android,parse-platform,Java,Android,Parse Platform,我正在尝试使用解析查询获取对象 这是我的代码: ParseQuery<ParseObject> query = ParseQuery.getQuery("Conference"); query.findInBackground(new FindCallback<ParseObject>() { public void done(List<ParseObject> results, ParseException e) {
ParseQuery<ParseObject> query = ParseQuery.getQuery("Conference");
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> results, ParseException e) {
if (e == null) {
// Results were successfully found from the local datastore.
} else {
showLog(e.toString());
}
}
});
ParseQuery query=ParseQuery.getQuery(“会议”);
findInBackground(新的FindCallback(){
公共作废完成(列出结果,异常解析){
如果(e==null){
//已从本地数据存储中成功找到结果。
}否则{
showLog(如toString());
}
}
});
我得到这个错误:
com.parse.ParseException:java.lang.IllegalStateException:ParseObject没有“objectId”的数据。调用fetchIfNeeded()获取数据
顺便说一句,my
Conference
类包含指针。如果直接从Parse查询,可以执行以下操作:
ParseQuery<ParseObject> query = ParseQuery.getQuery("Conference");
...
query.include("name_of_the_column_containing_a_pointer");
query.include("another_pointer_column");
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> results, ParseException e) {
if (e == null) {
// You can now access the pointers specified in the include
} else {
showLog(e.toString());
}
}
});
ParseQuery query=ParseQuery.getQuery(“会议”);
...
include(“包含指针的列的名称”);
include(“另一个指针列”);
findInBackground(新的FindCallback(){
公共作废完成(列出结果,异常解析){
如果(e==null){
//现在可以访问include中指定的指针
}否则{
showLog(如toString());
}
}
});
否则,如果您正在查询本地数据存储:
ParseQuery<ParseObject> query = ParseQuery.getQuery("Conference");
...
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> results, ParseException e) {
if (e == null) {
ParseObject parseObject = results.get(0); // Get the object
parseObject.fetchIfNeededInBackground(new GetCallback<ParseObject>() {
public void done(ParseObject result, ParseException e) {
if (e == null)
// Do something with result
}
}
} else {
showLog(e.toString());
}
}
});
ParseQuery query=ParseQuery.getQuery(“会议”);
...
findInBackground(新的FindCallback(){
公共作废完成(列出结果,异常解析){
如果(e==null){
ParseObject ParseObject=results.get(0);//获取对象
parseObject.fetchIfNeededInBackground(新的GetCallback(){
公共void完成(ParseObject结果,parsee异常){
如果(e==null)
//做一些有结果的事情
}
}
}否则{
showLog(如toString());
}
}
});
我也遇到了同样的问题。问题是我在ParseObject
实现中重写了getObjectId
方法:
@ParseClassName("MyOwnParseClass")
public class MyOwnParseClassextends ParseObject {
public static ParseQuery<MyOwnParseClass> getQuery() {
return ParseQuery.getQuery(MyOwnParseClass.class);
}
public String getObjectId() {
return getString("objectId");
}
public String getName() {
return getString("name");
}
public void setName(String name) {
put("name", name);
}
}
不返回对象ID
请尝试此代码
ParseQuery<ParseObject> query = ParseQuery.getQuery("MyClass");
ParseUser user = ParseUser.getCurrentUser();
query.whereEqualTo("owners", user);
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, com.parse.ParseException e) {
if (e == null) {
for (ParseObject parseObject : objects){
String task;
task= parseObject.get("owners").toString();
adapter.add(task);
adapter.notifyDataSetChanged();
}
} else {
// Something went wrong.
Toast.makeText(getActivity(),"Error: " + e.getMessage().toString(),Toast.LENGTH_SHORT).show();
}
}
});
ParseQuery=ParseQuery.getQuery(“MyClass”);
ParseUser=ParseUser.getCurrentUser();
查询:whereEqualTo(“所有者”,用户);
findInBackground(新的FindCallback(){
@凌驾
public void done(列出对象,com.parse.parsee){
如果(e==null){
用于(ParseObject ParseObject:objects){
字符串任务;
task=parseObject.get(“所有者”).toString();
adapter.add(任务);
adapter.notifyDataSetChanged();
}
}否则{
//出了点问题。
Toast.makeText(getActivity(),“Error:+e.getMessage().toString(),Toast.LENGTH_SHORT).show();
}
}
});
Hi@Juergen我能够使用以下方法之一获取objectId
字符串:
String id = ParseUser.getCurrentUser().getObjectId();
在Findcallback done
函数中
第二种方法-也是在findCallBack
的done()
函数中,返回的数据被命名为
objects.objects.get(0).getObjectId();
这是第三种方法。这里的主键是将
ParseObject
设置为最终变量,以便您可以在done()
方法中引用它
final ParseObject po = new ParseObject("Test");
po.put("username", temp.getUserName());
po.saveInBackground(new SaveCallback() {
public void done(ParseException e) {
if (e == null) {
String id = po.getObjectId();
Log.d(TAG, "The object id is: " + id);
} else { // The save failed. Log.d(TAG, "User update error: " + e);
}
}
});
我希望这对您有所帮助。parsequeryquery queryP=ParseQuery.getQuery(“课程”);
ParseQuery<ParseObject> queryP = ParseQuery.getQuery("Courses");
queryP.whereEqualTo("Student", nameStudent);
queryP.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> coursesList, ParseException e)
{
ArrayList<String> courses = null;
if (e == null)
{
courses = new ArrayList<String>();
for (ParseObject course : coursesList)
{
String courseName = course.getString("CoursesNameInParseColumn");
courses.add(courseName);
}
}
else
{
Log.d("Post retrieval", "Error: " + e.getMessage());
}
populateCoursesList(courses);
}
});
查询whereEqualTo(“学生”,以学生的名义);
findInBackground(新的FindCallback(){
@凌驾
公共作废完成(列表课程列表,Parsee)
{
ArrayList=null;
如果(e==null)
{
courses=newarraylist();
for(ParseObject课程:课程列表)
{
字符串courseName=course.getString(“courseNameinParseColumn”);
添加(courseName);
}
}
其他的
{
Log.d(“检索后”,“错误:+e.getMessage());
}
大众课程列表(课程);
}
});
尝试此操作您必须获取该指针对象的数据。我得到了相同的错误,我的类甚至不包含任何指针。它非常简单,只包含一个
名称
列(除了默认列之外)。如果我的类不包含指针并且仍然抛出错误?嗨,juergen,我能够使用以下方法之一获取objectId字符串:string id=ParseUser.getCurrentUser().getObjectId();在Findcallback done函数中。第二种方法-也是在done()中findCallBack函数,其中返回的数据命名为objects.objects.get(0).getObjectId();这是第三种方法。主键是将ParseObject设置为最终变量,以便您可以在done()方法中引用它。最终ParseObject po=new ParseObject(“Test”);po.put(“username”,temp.getUserName());po.savenbackground(new SaveCallback(){public void done(ParseException e){if(e==null){String id=po.getObjectId();Log.d(TAG,“对象id为:”+id);}否则{//保存失败。Log.d(TAG,“用户更新错误:+e);}});我希望这对您有所帮助。这只是调用同一方法的3个不同代码段:getObjectId()
ofParseObject
我在回答中已经提到了
ParseQuery<ParseObject> queryP = ParseQuery.getQuery("Courses");
queryP.whereEqualTo("Student", nameStudent);
queryP.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> coursesList, ParseException e)
{
ArrayList<String> courses = null;
if (e == null)
{
courses = new ArrayList<String>();
for (ParseObject course : coursesList)
{
String courseName = course.getString("CoursesNameInParseColumn");
courses.add(courseName);
}
}
else
{
Log.d("Post retrieval", "Error: " + e.getMessage());
}
populateCoursesList(courses);
}
});