首先链接的Android Dropbox数据存储区DbxTable.query getNull

时间:2014-09-18 03:49:01

标签: dropbox datastore

第一次链接成功时,我使用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并插入Duplicate same data.help me

1 个答案:

答案 0 :(得分:0)

这可能是一个时间错误。 Sync / Datastores 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记录。