database - 如何创建多个 NoSQL 存储并访问它们(Flutter/Dart)?
问题描述
我正在尝试将 Sembast 用作应用程序的本地数据库,但在创建和访问数据库中的不同“商店”时遇到了麻烦。
到目前为止,我可以初始化并访问一个商店,但我希望能够创建 3 个不同的商店并在需要时访问它们中的每一个。到目前为止,我的代码如下所示:
创建数据库和唯一存储:
class SembastActivityRepository extends ActivityRepository {
final String activityName; //available paths are log, user_preferences,
final StoreRef<int, Map<String, dynamic>> _store;
final Database _database = GetIt.I.get();
SembastActivityRepository({this.activityName})
: _store = intMapStoreFactory.store(activityName);
@override
Future<int> insertActivity(Activity activity) async {
return await _store.add(_database, activity.toMap());
}
@override
Future updateActivity(Activity activity) async {
await _store.record(activity.id).update(_database, activity.toMap());
}
...
}
初始化名为“Sleep”的数据库和存储:
class Init {
//final String activityName;
//Init(this.activityName);
static Future initialize() async {
//initialize Sembast database
final appDir = await getApplicationDocumentsDirectory();
await appDir.create(recursive: true);
final databasePath = join(appDir.path, "sembast.db");
final database = await databaseFactoryIo.openDatabase(databasePath);
GetIt.I.registerSingleton<Database>(database);
//register Repository
GetIt.I.registerLazySingleton<ActivityRepository>(
() => SembastActivityRepository(activityName: 'Sleep'));
}
...
}
我如何能够创建 3 个独特的商店,然后能够在访问商店中的数据之间切换(比如通过按下按钮我可以循环浏览商店中的数据)?
提前致谢!
解决方案
如何使用创建它们:
final sleepDbStore = sembast.intMapStoreFactory.store('sleep');
final sweetDreamsDbStore = sembast.intMapStoreFactory.store('sweetDreams');
final nightmaresDbStore = sembast.intMapStoreFactory.store('nightmares');
推荐阅读
- adaptive-cards - 为什么最新版本的自适应卡不再可用于 SPFX 集成?
- python - 如何处理错误处理代码中的错误?
- r - “runjags”R 包run.jags 函数并行方法。并行方法使用多少个内核?
- graphql - 对 GraphQL 查询进行排序
- javascript - JS 使用 map() 获取键名
- image - Parquet 可以用来存储图片吗?有什么好处吗?
- karate - 当数组的可用性是动态的时,如何从数组的数组中获取特定键的所有值
- python - Pandas DataFrame 中的平均加密价格计算器 KeyError
- json - Bot Framework Composer - 自适应卡片 - 用于启动另一个对话框的按钮
- python - 遇到 Keras One 热编码内存错误问题