简体   繁体   中英

Query on local datastore with unsaved pinned object of id null in Parse SDK Android

I'm using Parse sdk for android.

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

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

but the query gives no result,probably because objectId of orderObject is null.

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?

Any help is appreciated.

EDIT:

There are two subclasses

Order extends ParseObject 
OrderIte extends ParseObject

I create some OrderItem-s and one order. I put Order pointer in OrderItem-s and pin them all.

Later when i query OrderItem class in local datastore I want to retrieve OrdeItem-s for a perticular order. So in the OrderItem query i set

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

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.

ParseObject pinInBackground returning null objectId

This makes basic queries fail and makes the LocalDatastore less useful.

A somewhat working solution for me is:

when setting pointer of Order in OrderItem-s

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM