flutter - Sembast-删除 map 中的值

标签 flutter dart sembast

我有一个存储 map 对象的Sembast商店。如果要删除 map 中的键,是否必须更新整个 map 对象,或者是否有办法在不更新整个 map 的情况下删除 key ?这些文档仅显示如何删除记录,而没有显示如何删除字段。由于存在一种更新单个字段的方法,因此我认为将此功能用于其他操作是有意义的。
例:

// store a map that contains another map
int key = await petStore.add(db, {'name': 'fish', friends : {'cats' : 0, 'dogs' : 0}});

// update just the cats attribute
await petStore.record(key).update{'friends.cats' : 2};

// now I want to (if it is possible) remove the cats attribute without calling
await petStore.record(key).update({'name': 'fish', friends : {'dogs' : 0}})

最佳答案

is there a way to remove the key without updating the entire map?


是的,类似于Firestore,您可以使用哨兵值 FieldValue.delete 删除字段。
使用点(.),您甚至可以引用嵌套字段。以下是在示例中删除cats中的friends键的示例:
print(await petStore.record(key).get(db));
// prints {name: fish, friends: {cats: 0, dogs: 0}}

print(await petStore
    .record(key)
    .update(db, {'friends.cats': FieldValue.delete}));
// prints {name: fish, friends: {dogs: 0}}
有关更多信息,请查看有关updating fields的文档。

关于flutter - Sembast-删除 map 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63714306/

相关文章:

android - 应用卸载 Flutter 时不会删除应用数据库

android - 是否可以在不使用 Firebase 的情况下为移动设备实现自定义推送通知?

android - 由于包含使用不受支持的插件版本的 Kotlin 模块,因此不支持新的 Gradle Sync

android - 在Android Studio创建的Flutter项目中添加Realm数据库

flutter - Flutter:将列表<dynamic>从Json.encode保存到SharedPreferences

dart - RangeError : Invalid value: Not in range 0. .1114111,包括:-1 尝试使用升级命令时

function - 我如何能够从有状态小部件在无状态小部件中传递 setState

flutter - 如何测试在 Flutter 中返回 Future 的异步方法的执行时间