[英]Query on local datastore with unsaved pinned object of id null in Parse SDK Android
I'm using Parse sdk for android.我正在为 android 使用 Parse sdk。
In offline mode, I created some parse objects and pinned them using在离线模式下,我创建了一些解析对象并使用固定它们
...
ParseObject.pinAll(cartItems)
orderObject.pin() //orderObject.objectId() returns null!
...
Later when i query cartItems in localDatastore i use稍后当我在 localDatastore 中查询 carItems 我使用
...
query.whereEqualTo("order", orderObject);
query.fromLocalDatastore().ignoreACLs();
...
but the query gives no result,probably because objectId of orderObject is null.但查询没有给出结果,可能是因为 orderObject 的 objectId 为空。
Is there any way to execute this query successfully?
有没有办法成功执行此查询?
If parse is incapable to do this should i go for Room database to store the data offline or is there any better alternative?如果解析无法做到这一点,我应该去Room 数据库离线存储数据还是有更好的选择?
Any help is appreciated.任何帮助表示赞赏。
EDIT:编辑:
There are two subclasses有两个子类
Order extends ParseObject
OrderIte extends ParseObject
I create some OrderItem-s and one order.我创建了一些 OrderItem-s 和一个订单。 I put Order pointer in OrderItem-s and pin them all.
我将 Order 指针放在 OrderItem-s 中并将它们全部固定。
Later when i query OrderItem class in local datastore I want to retrieve OrdeItem-s for a perticular order.稍后当我在本地数据存储中查询 OrderItem 类时,我想检索 OrdeItem-s 以获得特定订单。 So in the OrderItem query i set
所以在我设置的 OrderItem 查询中
query.equaTo("order",myOrder.getObjectId())
But since the device is offline the whole time myOrder.getObjectId()
returns null and the query fails to find the orderItems for myOrder但是由于设备始终处于离线状态
myOrder.getObjectId()
返回 null 并且查询无法找到 myOrder 的 orderItems
Expected query -> Select all from OrderItem where order = myOrder.getObjectId()
Actual query parse makes -> Select all from OrderItem where order = null
null as the object is stored offline in localdatastore. null 因为对象离线存储在 localdatastore 中。
ParseObject pinInBackground returning null objectId ParseObject pinInBackground 返回 null objectId
This makes basic queries fail and makes the LocalDatastore less useful.这会使基本查询失败,并使 LocalDatastore 不太有用。
A somewhat working solution for me is:对我来说有点工作的解决方案是:
when setting pointer of Order in OrderItem-s在 OrderItem-s 中设置 Order 指针时
instead of代替
orderItem.put("order",myOrderObject)
i use我用
String randomId = generateRandomString()
myOrderObject.put("temp_orderOfflineId",randomId)
orderItem.put("order_id",randomId )
and in query instead of并在查询中而不是
orderItemquery.equaTo("order",myOrder.getObjectId())
i use我用
query.equaTo("order_id",myOrder.getString("temp_orderOfflineId"))
I use this approach This later makes sync with server hard,very hard.我使用这种方法 这以后很难与服务器同步,非常困难。
Waiting for better solution等待更好的解决方案
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.