NoSQL 创建和访问不同的商店引用
NoSQL creating and accessing different store references
我正在尝试为 Flutter 应用程序创建一个 NoSQL 数据库,该应用程序针对全天进行的不同活动(睡眠、锻炼、饮食等)具有不同的商店。我不想对商店进行硬编码,而是希望能够根据需要添加和删除商店。
我遇到的问题是 intMapStoreFactory.store() 需要静态输入,但 SembastActivityRepository 的输入不能是静态的。有没有办法从这个 WembastActivityRepository 外部创建和访问自定义商店名称 class?
谢谢!
import 'package:get_it/get_it.dart';
import 'package:sembast/sembast.dart';
import './activity.dart';
import './activity_repository.dart';
class SembastActivityRepository extends ActivityRepository {
final activityName;
SembastActivityRepository({this.activityName});
final Database _database = GetIt.I.get();
final StoreRef _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());
}
@override
Future deleteActivity(int activityId) async {
await _store.record(activityId).delete(_database);
}
@override
Future<List<Activity>> getAllActivities() async {
final snapshots = await _store.find(_database);
return snapshots
.map((snapshot) => Activity.fromMap(snapshot.key, snapshot.value))
.toList(growable: false);
}
}
我不确定你所说的静态是什么意思,但无论如何你的代码无法编译,我强烈建议使用强模式来获得编译时建议。一个StoreRef
只是一个store及其键值类型的声明,你可以随时create/and重新创建一个StoreRef
,store本身只有在你添加记录时才会创建
如果只是为了编译代码,在构造函数中初始化_store:
class SembastActivityRepository {
final String activityName;
final StoreRef<int, Map<String, dynamic>> _store;
SembastActivityRepository({this.activityName})
: _store = intMapStoreFactory.store(activityName);
// ...
}
我正在尝试为 Flutter 应用程序创建一个 NoSQL 数据库,该应用程序针对全天进行的不同活动(睡眠、锻炼、饮食等)具有不同的商店。我不想对商店进行硬编码,而是希望能够根据需要添加和删除商店。
我遇到的问题是 intMapStoreFactory.store() 需要静态输入,但 SembastActivityRepository 的输入不能是静态的。有没有办法从这个 WembastActivityRepository 外部创建和访问自定义商店名称 class?
谢谢!
import 'package:get_it/get_it.dart';
import 'package:sembast/sembast.dart';
import './activity.dart';
import './activity_repository.dart';
class SembastActivityRepository extends ActivityRepository {
final activityName;
SembastActivityRepository({this.activityName});
final Database _database = GetIt.I.get();
final StoreRef _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());
}
@override
Future deleteActivity(int activityId) async {
await _store.record(activityId).delete(_database);
}
@override
Future<List<Activity>> getAllActivities() async {
final snapshots = await _store.find(_database);
return snapshots
.map((snapshot) => Activity.fromMap(snapshot.key, snapshot.value))
.toList(growable: false);
}
}
我不确定你所说的静态是什么意思,但无论如何你的代码无法编译,我强烈建议使用强模式来获得编译时建议。一个StoreRef
只是一个store及其键值类型的声明,你可以随时create/and重新创建一个StoreRef
,store本身只有在你添加记录时才会创建
如果只是为了编译代码,在构造函数中初始化_store:
class SembastActivityRepository {
final String activityName;
final StoreRef<int, Map<String, dynamic>> _store;
SembastActivityRepository({this.activityName})
: _store = intMapStoreFactory.store(activityName);
// ...
}