Flutter Sembast-删除映射中的值

Flutter Sembast-删除映射中的值,flutter,dart,sembast,Flutter,Dart,Sembast,我有一个存储地图对象的sembast存储。如果要删除地图中的关键点,是否必须更新整个地图对象,或者是否有方法在不更新整个地图的情况下删除关键点?文档仅显示如何删除记录,而不显示如何删除字段。因为有一种方法可以更新单个字段,所以我认为将此功能用于其他操作是有意义的 例如: // store a map that contains another map int key = await petStore.add(db, {'name': 'fish', friends : {'cats' : 0,

我有一个存储地图对象的sembast存储。如果要删除地图中的关键点,是否必须更新整个地图对象,或者是否有方法在不更新整个地图的情况下删除关键点?文档仅显示如何删除记录,而不显示如何删除字段。因为有一种方法可以更新单个字段,所以我认为将此功能用于其他操作是有意义的

例如:

// 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}})
有没有办法在不更新整个地图的情况下删除密钥

是与Firestore类似,您可以使用sentinel值删除字段

使用点(
)甚至可以引用嵌套字段。下面是在您的示例中删除
cats
friends
的示例:

print(等待petStore.record(key.get(db));
//打印{名称:鱼,朋友:{猫:0,狗:0}
打印(等待打印)
.记录(键)
.update(db,{'friends.cats':FieldValue.delete});
//打印{名称:鱼,朋友:{狗:0}
有关更多信息,请查看有关的文档