当我尝试使用比浏览器当前具有的更高版本升级我的 indexedDB 数据库时出现异常,但有趣的部分中止是,它被升级了。这是设计使然还是我做错了什么。
我从 dart 示例 Todo 中得到了很大的启发,所以我的代码最终看起来像这样。
void open_db(String DB_name, int Version, String Store_Name){
var request = window.indexedDB.open(DB_name, Version);
request.on.success.add((e) => _onDbOpened(request.result));
request.on.error.add((e) => print("Error opening db"));
request.on.upgradeNeeded.add((e) => _onUpgradeNeeded(request.transaction, Store_Name));
}
void _onDbOpened(IDBDatabase db){
_db = db;
print("DB opened");
}
void _onUpgradeNeeded(IDBTransaction changeVersionTransaction, String Store_Name){
changeVersionTransaction.on.error.add((e) => print("Error upgrading db"));
changeVersionTransaction.on.complete.add((e) => print("Success upgrading db"));
changeVersionTransaction.db.createObjectStore(Store_Name);
}
当我使用 version=4 运行它并且浏览器只有 version=3 时,它会按预期跳转到 _onUpgradeNeeded,但我收到 IDBDatabaseException 消息:“ConstraintError: DOM IDBDatabase Exception 4”。
那么我哪里错了?