以下代码会抛出Internal Dartium Exception。
<!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提交了一个问题,但我的代码可能有问题吗?
答案 0 :(得分:1)
引用的错误表明这是一个错误,但错误消息现在很有用。它不应该报告更有用的消息:
未捕获错误:DataError:对象存储使用外线键并且没有密钥生成器,并且未提供密钥参数。
答案 1 :(得分:0)
尝试以下方法:
void _initDB(VersionChangeEvent e) {
(e.target as Request).result.createObjectStore('myStore', autoIncrement: true);
}
但是您需要在设置中清除浏览器中的数据,以使新结构正常工作(或者可能增加db版本号)。