2

如何使用 IndexedDB 和 Dart 打开数据库?API 与 JavaScript 的并不完全相同。

4

1 回答 1

7

新的 IndexedDB API 使用 Dart 对 Streams 和 Futures 的支持。以下是使用 Dart M3 或更高版本打开 IndexedDB 数据库的方法:

import 'dart:html';
import 'dart:indexed_db';
import 'dart:async';

Future<Database> openDatabase(String dbName, String storeName, {int version:1}) {
  return window.indexedDB.open(dbName, version: version,
    onUpgradeNeeded: (e) {
      Database db = e.target.result;
      if (!db.objectStoreNames.contains(storeName)) {  
        db.createObjectStore(storeName);
      }
    });
}

main() {
  openDatabase('test-db', 'test-store').then((Database db) {
    // do database stuff
  });
}

在此代码中,window.indexedDB.open调用返回 a Future<Database>,在打开数据库时完成。

onUpgradeNeeded函数在数据库版本与指定版本不匹配时运行。

于 2013-02-17T21:52:58.977 回答