【问题标题】:Query on local datastore with unsaved pinned object of id null in Parse SDK Android在 Parse SDK Android 中使用未保存的 id null 固定对象查询本地数据存储
【发布时间】:2020-01-16 14:30:12
【问题描述】:

我正在使用 Parse sdk for android。

在离线模式下, 我创建了一些解析对象并使用

固定它们
  ...
  ParseObject.pinAll(cartItems)
  orderObject.pin()       //orderObject.objectId() returns null!
  ...

稍后当我在我使用的 localDatastore 中查询 cartItems 时

    ...
    query.whereEqualTo("order", orderObject);
    query.fromLocalDatastore().ignoreACLs();
    ...

但是查询没有结果,可能是因为orderObject的objectId为null。

有什么方法可以成功执行这个查询吗?

如果解析无法做到这一点,我应该去 Room 数据库 离线存储数据还是有更好的选择?

感谢任何帮助。

编辑:

有两个子类

Order extends ParseObject 
OrderIte extends ParseObject

我创建了一些 OrderItem-s 和一个订单。 我把订单指针放在 OrderItem-s 并将它们全部固定。

稍后当我在本地数据存储中查询 OrderItem 类时 我想检索特定订单的 OrdeItem-s。 所以在我设置的 OrderItem 查询中

query.equaTo("order",myOrder.getObjectId())

但是由于设备一直处于离线状态 myOrder.getObjectId() 返回 null 并且查询找不到 orderItems 我的订单

Expected query -> Select all from OrderItem where order = myOrder.getObjectId()
Actual query parse makes -> Select all from OrderItem where order = null

null,因为对象离线存储在本地数据存储中。

ParseObject pinInBackground returning null objectId

这会使基本查询失败并降低 LocalDatastore 的用处。

【问题讨论】:

  • 您要查询的类是什么?它与订单有什么关系?你也固定了这个类的对象吗?
  • 问题已更新。请再次检查
  • 你试过query.equaTo("order",myOrder)而不是query.equaTo("order",myOrder.getObjectId())吗?正如您在this 链接的第一个示例中看到的那样,它应该是正确的方式。
  • 代码可能会有所不同。但我按照文档做了。我确信代码没有错误。它在于 objectId 为 Offline 对象提供 null
  • 你试过我的建议了吗?

标签: android parse-platform android-room parse-server parse-android-sdk


【解决方案1】:

对我来说有点可行的解决方案是:

在OrderItem-s中设置Order的指针时

而不是

orderItem.put("order",myOrderObject)

我用

String randomId = generateRandomString()
myOrderObject.put("temp_orderOfflineId",randomId)
orderItem.put("order_id",randomId )

在查询中 而不是

orderItemquery.equaTo("order",myOrder.getObjectId())

我用

query.equaTo("order_id",myOrder.getString("temp_orderOfflineId"))

我使用这种方法 这会导致与服务器同步变得非常困难,非常困难。

等待更好的解决方案

【讨论】:

    猜你喜欢
    • 2015-08-12
    • 2016-01-04
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多