1

我在使用 idb.ObjectStore.put 的新语法 (r18915) 时遇到问题。有人可以帮忙吗?示例如下,导致错误如下:

AsyncError: ‘Error:DataError: DOM IDBDatabase Exception 0’
Stack trace: #0 ObjectStore._put_2(file:///E:/b/build/slave/dartium-win-full-trunk/build/src/build/Release/obj/
global_intermediate/webkit/bindings/dart/indexed_db/ObjectStore.dart:141:3) #1
  ObjectStore.$dom_put(file:///E:/b/build/slave/dartium-win-full-trunc/build/src/build/Release/obj/
global_intermediate/webkit/bindings/dart/indexed_db/ObjectStore.dart:137:18) #2
  ObjectStore.put(file:///E:/b/build/slave/dartium-win-full-trunc/build/src/build/Release/obj/
global_intermediate/webkit/bindings/dart/indexed_db/ObjectStore.dart:9:27)

我正在使用的代码正在运行,但已针对新版本进行了修改,如下所示:

Future fDbAddOrUpdateClient(String sKey1, ClassClientData clClientData) { 
  idb.Transaction oDbTxn         = ogDb1.transaction(sgStoreClient, 'readwrite');
  idb.ObjectStore oDbStoreClient = oDbTxn.objectStore(sgStoreClient);

  Completer completer = new Completer();
  var oDbReqPut = oDbStoreClient.put(
        {'sKey': sKey1,
         'sNameTitle'  : clClientData.sNameTitle, 
         'sNameFamily' : clClientData.sNameFamily,
         'sNameGiven1' : clClientData.sNameGiven1,
         'sNameGiven2' : clClientData.sNameGiven2
         })
         .then((val){
           completer.complete(val);
           return;
         })
         .catchError((e){
           window.alert("${e}");
           return;
         });
}
4

2 回答 2

0

谢谢您的帮助。主要问题似乎是数据库未打开或未创建对象存储等相关内容,但未显示错误。

希望以下是更好的代码(r19425):

  Future future = fDbAddOrUpdateClient(sKey, clClientData)
   .catchError((oError) => window.alert("${oError}"));
}

Future fDbAddOrUpdateClient(String sKey1, ClassClientData clClientData) { 
  idb.Transaction oDbTxn         = ogDb1.transaction(sgStoreClient, 'readwrite');
  idb.ObjectStore oDbStoreClient = oDbTxn.objectStore(sgStoreClient);

  return oDbStoreClient.put(fMapClient(sKey1, clClientData));
}
于 2013-03-07T04:59:03.343 回答
0

除了您指定函数返回但从不返回的未来之外,只有一个完整的值(如其他评论中所述),未来的语法看起来是正确的。错误本身实际上表明传递给您的 objectstore.put 命令的数据是无效的。

请参阅IndexedDB 异常。您可能需要验证正在传递到地图的数据。

于 2013-03-04T13:49:33.273 回答