解析服务器如何通过查询获取对象ID?

时间:2018-03-30 00:36:41

标签: java parse-platform codenameone parse-server parse4cn1

如果我们想获得一个对象ID,我们应该这样做:

String objectId = gameScore.getObjectId();

但如果我们想通过查询获取对象ID呢?像这样:

ParseQuery<ParseObject> query = ParseQuery.getQuery("mytable");
query.whereEqualTo("Title", "Adrians Book");

List<ParseObject> results = null;

 try {

        results = query.find();

        if(!results.isEmpty()) {
        String objectId = results.getObjectId();
        }

    } catch (com.parse4cn1.ParseException e) {

        Dialog.show("Err", "Something went wrong.", "OK", null);
    }

听起来很有趣你不觉得吗?我希望有可能。正如您在此示例中所看到的,查询将从表中的特定对象获取一个值,该值可以跟踪对象ID,然后返回它。 ParseQuery类应该用getObjectId()实现。因为通过这种方式,即使在应用程序重新启动之后,应用程序始终也可以从查询中访问对象ID,因此在第一个示例中,实际上是ParseObject实例的gameScore在重新启动后将丢失对数据库的引用。通过查询获取对象ID,它可以编写应用程序以自动获取对象ID,而无需手动执行,也不依赖于ParseObject的实例。

2 个答案:

答案 0 :(得分:1)

@Shai Almog:非常感谢您花时间查看ParseQuery文档。 我不小心弄清楚如何完成这件事!

ParseQuery<ParseObject> query = ParseQuery.getQuery("mytable");
query.whereEqualTo("Title", "Adrians Book");

List<ParseObject> results = null;

 try {
        results = query.find();
        if(!results.isEmpty()) {
        String objectId = results.get(0).getObjectId();
        System.out.println(objectId);
        }

    } catch (com.parse4cn1.ParseException e) {

        Dialog.show("Err", "Something went wrong.", "OK", null);
    }

是的,在添加方法.get(index)之后,它允许您访问方法.getObjectId(),因为结果是ParseObject的列表,然后查询结果的相应objectId将在控制台中打印!我很高兴它正在工作,因为我现在不需要序列化每个对象,这将是一个痛苦。

此外,如果您想使用现有的objectId设置ParseObject实例,以防您需要更新数据库中的内容,可以使用此示例:

ParseObject po = ParseObject.create("mytable");
po.setObjectId(//YOUR DESIRED OBJECTID HERE, AS LONG AS IT EXISTS IN THE DATABASE);

答案 1 :(得分:0)

据我所知,您需要获取整个对象,然后查询它的ID。我在这里看不到查询ID方法https://github.com/sidiabale/parse4cn1/blob/41fe491699e604fc6de46267479f47bc422d8978/src/com/parse4cn1/ParseQuery.java