0

以下代码引发内部 Dartium 异常。

<!DOCTYPE html>

<html>
<head>
  <script type="application/dart">

    import 'dart:html';
    import 'dart:indexed_db';
    import 'dart:math';

    Random random = new Random();

    void main() {
      window.indexedDB.open('myDB', version: 1, onUpgradeNeeded: _initDB).then((Database db) {
        Transaction transaction = db.transaction('myStore', 'readwrite');
        ObjectStore objectStore = transaction.objectStore('myStore');
        Map data = {
          'id': 'id' + random.nextInt(1000).toString(),
          'name': 'name' + random.nextInt(1000).toString()
        };
        objectStore.put(data);
      });
    }

    void _initDB(VersionChangeEvent e) {
      (e.target as Request).result.createObjectStore('myStore');
    }

  </script>
  <script src="packages/browser/dart.js"></script>
</head>
</html>

我向http://www.dartbug.com/14256提交了一个问题,但我的代码可能有问题?

4

2 回答 2

1

引用的错误表明这是一个错误,但错误消息现在很有用。它不应该报告更有用的消息:

未捕获的错误:DataError:对象存储使用外联键并且没有键生成器并且未提供键参数。

于 2014-09-14T14:52:50.483 回答
0

尝试以下操作:

void _initDB(VersionChangeEvent e) {
    (e.target as Request).result.createObjectStore('myStore', autoIncrement: true);
}

但是您需要在设置中清除浏览器中的数据才能使新结构正常工作(或者可能增加数据库版本号)。

于 2015-01-18T00:37:32.487 回答