在Parse SDK Android中查询具有id为null的未保存固定对象的本地数据存储
我正在使用android的Parse sdk 在脱机模式下, 我创建了一些解析对象,并使用在Parse SDK Android中查询具有id为null的未保存固定对象的本地数据存储,android,parse-platform,android-room,parse-server,parse-android-sdk,Android,Parse Platform,Android Room,Parse Server,Parse Android Sdk,我正在使用android的Parse sdk 在脱机模式下, 我创建了一些解析对象,并使用 ... ParseObject.pinAll(cartItems) orderObject.pin() //orderObject.objectId() returns null! ... 稍后,当我在localDatastore中查询cartItems时,我使用 ... query.whereEqualTo("order", orderObject);
...
ParseObject.pinAll(cartItems)
orderObject.pin() //orderObject.objectId() returns null!
...
稍后,当我在localDatastore中查询cartItems时,我使用
...
query.whereEqualTo("order", orderObject);
query.fromLocalDatastore().ignoreACLs();
...
但是查询没有给出结果,可能是因为orderObject的objectId为null。
是否有任何方法可以成功执行此查询
如果parse无法做到这一点,我应该使用Room database离线存储数据,还是有更好的替代方案
感谢您的帮助
编辑:
有两个子类
Order extends ParseObject
OrderIte extends ParseObject
我创建了一些OrderItem-s和一个订单。
我将订单指针放在OrderItem-s中
把它们都钉住
稍后在本地数据存储中查询OrderItem类时
我要检索特定订单的OrdeItem-s。
所以在OrderItem查询中,我设置了
query.equaTo("order",myOrder.getObjectId())
但由于设备一直处于脱机状态
myOrder.getObjectId()
返回null,查询无法找到的orderItems
迈奥德
null,因为对象脱机存储在localdatastore中
这会导致基本查询失败,并使LocalDatastore变得不那么有用。对我来说,一个可行的解决方案是: 在OrderItem-s中设置订单指针时 而不是
orderItem.put("order",myOrderObject)
orderItemquery.equaTo("order",myOrder.getObjectId())
我用
String randomId = generateRandomString()
myOrderObject.put("temp_orderOfflineId",randomId)
orderItem.put("order_id",randomId )
还有疑问
而不是
orderItem.put("order",myOrderObject)
orderItemquery.equaTo("order",myOrder.getObjectId())
我用
我使用这种方法
这使得与服务器的同步变得非常困难
等待更好的解决方案您要查询的类是什么?它与订单有什么关系?您是否也锁定了此类的对象?问题已更新。请再次检查您是否尝试了
query.equaTo(“order”,myOrder)
而不是query.equaTo(“order”,myOrder.getObjectId())
?正如您在第一个链接示例中看到的那样,这应该是正确的方法。代码可能有点不同。但是我按照文档做了。我确信代码中没有错误。这取决于objectId为脱机objectId提供null。您尝试过我的建议吗?