【问题标题】:Parse Server How to get an object ID by query?Parse Server 如何通过查询获取对象 ID?
【发布时间】:2018-09-09 01:17:38
【问题描述】:

如果我们想获得一个对象 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 的实例。

【问题讨论】:

  • 这里有问题吗?或者您只是在发泄您认为解析服务器 API应该 工作的方式?
  • @paulsm4 是的,有。如果您知道如何通过查询获取对象 ID?请告诉我。

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


【解决方案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(),因为 results 是 ParseObject 的列表,然后查询结果的相应 objectId 将打印在控制台中!我很高兴它能正常工作,因为我现在不需要序列化每个对象,这会很痛苦。

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

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

【讨论】:

  • Parse 会在您保存对象时自动生成唯一的对象 ID。为什么要手动设置对象 ID?你的用例是什么?这是 setObjectId() 的 API 文档:“一般来说,您不需要使用它。但是,在某些情况下,这可能很方便。例如,如果您自己序列化 ParseObject 并希望 [本地] 重新创建它,您可以使用它来精确地重新创建 ParseObject。"
  • @sidiabale 我不再手动设置 ID,现在我的应用程序会为我做这件事。如果您有一种方法可以在应用程序注册产品时使用,比如说图书馆的一本书,那么它也会通过应用程序序列化它们来自动创建对象。我将不胜感激。由于我没有这种方法,我的应用程序通过查询获取 ID,因此它对我来说工作正常。是的,我查看了 API 文档,但该方法不会创建对象,只会序列化现有对象。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2011-05-17
    • 2012-08-28
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多