我最近设法切换到本地数据存储区,将数据库的所有必需部分移动到客户端。此外,每当数据发生变化时,我都会发送推送通知,以便客户数据保持最新状态。
现在我的问题是我的数据中的一个指针在更新后不断返回旧指针。
以下是我使用的代码:
public ParseQuery<CircuitUnit> circuitUnits() {
ParseQuery<CircuitUnit> query = CircuitUnit.getQuery();
query.include(CircuitUnit.circuits);
query.include(CircuitUnit.guard);
query.setLimit(1000);
return query;
}
circuitUnits().findInBackground(
new FindCallback<CircuitUnit>() {
@Override
public void done(List<CircuitUnit> objects, ParseException e) {
Log.d(TAG, "Pinning circuitUnits " + objects.size());
// debugging loop of results
for (CircuitUnit circuitUnit : objects) {
if (circuitUnit.getObjectId().equals("TXEZDch6wK")) {
Guard guard = circuitUnit.getGuard();
Log.d(TAG, "Guard: " + guard.getObjectId());
}
}
// This function updates the Local datastore with the newly fetched objects
// updateServerDataPin(objects, PinsGlobal.CIRCUIT_UNITS,
e, callback);
}
});
Logged输出为:&#34; Guard:L440gHXKTY&#34;它应该是SDDg23rR4h
我添加了CircuitUnit表的屏幕截图,显示SDDg23rR4h确实是指针的预期objectId。
我尝试创建一个示例项目,将该问题显示为parse.com的错误报告的一部分,但返回了正确的指针。
我的理论是,这个问题在于本地数据存储中的数据会以某种方式干扰结果。不是我理解为什么,因为我显然是在询问网络而不是在本地。
似乎忽略了include语句,只是填充了本地数据存储区中的已知数据。
有没有人遇到类似的事情或对这种行为有可能的解释?