Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对ParseObject的查询_Java_Android_Parse Platform - Fatal编程技术网

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()
of
ParseObject
我在回答中已经提到了
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);
        }
    });