Sembast删除所有文档的最佳方法

时间:2019-05-20 05:44:40

标签: dart flutter

我在Flutter应用中使用Sembast。我必须刷新商店中的所有数据,并且需要一种方法来删除商店中的所有文档。我看了看API,唯一能看到的就是要么获取所有密钥,然后在查找器中使用它们以删除它们,或者删除存储并重新创建它。不确定我是否忽略了支持该功能的内容?

4 个答案:

答案 0 :(得分:0)

您可以使用sembast deleteAll方法删除Database中的所有记录,该方法将返回已删除键的列表,您可以在重新创建存储区的任何代码中使用这些键。

如果不需要重新创建存储,则可以使用sembast clear方法删除存储中的所有记录。

答案 1 :(得分:0)

可以(并且应该)使用delete https://pub.dev/documentation/sembast/latest/sembast/StoreRef/delete.html方法。也许应该有一个明确的方法,简单地调用delete而不进行过滤,这类似于索引的db API ...

此处的一些信息:https://github.com/tekartik/sembast.dart/blob/master/sembast/doc/writes.md#delete-records

答案 2 :(得分:0)

我这样做了:

var receiptStore = intMapStoreFactory.store("receipts");
final database = await databaseFactoryIo.openDatabase(dbPath, version: 2,
    onVersionChanged: (Database db, int oldVersion, int newVersion) async {
  if (oldVersion == 1) {
    await receiptStore.delete(db);
  }
});

以便我通过删除数据库来“升级”数据库。

答案 3 :(得分:0)

这对我有用-:

db.close();
await databaseFactoryIo.deleteDatabase(_database.path);
db = null;