Android Dropbox数据存储DbxTable.query第一次链接时为getNull



当第一次链接成功时,我使用mTable.insert(accountsFields)上传上传前,

DbxFields queryParams = new DbxFields().set("uuid",accountsFields.getString("uuid"));
DbxTable.QueryResult results = mTable.query(queryParams);;
Iterator<DbxRecord> it = results.iterator();
if (it.hasNext()) {
DbxRecord firstResult = it.next();
if (firstResult.getDate("dateTime_sync").getTime() < accountsFields.getDate("dateTime_sync").getTime()) {
firstResult.setAll(accountsFields);
}
} else {
mTable.insert(accountsFields);
}

但是,我第一次得到的结果为null,并插入重复的相同数据帮助我

这可能是一个定时错误。同步/数据存储SDK中的所有内容都是异步的。链接帐户后,SDK立即开始从服务器下载数据。如果您立即查询,您将一无所获(因为还没有下载任何数据)。

为了解决您的特定问题,最好只使用UUID作为记录ID。请参阅https://www.dropbox.com/developers/blog/84/initializing-data-in-datastores-with-getorinsert例如。本质上是这样的:

String uuid = ...;
DbxRecord record = table.getOrInsert(uuid, new DbxFields().set("foo", "bar"));

这样,您就永远不会有重复的记录。如果多个用户或多个设备上的同一用户插入同一条记录,它们最终都会通过冲突解决方案合并,因此服务器上该UUID的记录永远不会超过一条。

最新更新