【发布时间】: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