在解析对象上查询

2022-09-03 14:16:15

我正在尝试获取具有解析查询的对象。

这是我的代码:

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());
            }
        }
    });

我收到此错误:

com.parse.ParseException: java.lang.IllegalStateException: ParseObject 没有 'objectId' 的数据。调用 fetchIfRequired() 来获取数据。

顺便说一句,我的类包含指针。Conference


答案 1

如果您直接从 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<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());
        }
    }
});

答案 2

嗨@Juergen我能够使用以下方法之一获取字符串:objectId

String id = ParseUser.getCurrentUser().getObjectId();

在函数内。Findcallback done

第二种方式 - 也在函数中返回的数据被命名done()findCallBack

objects.objects.get(0).getObjectId(); 

这是第三种方法。这里的主键是将 your 设置为最终变量,以便您可以在方法中引用它。ParseObjectdone()

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); 
  }
 }
});

我希望这对你有所帮助。


推荐