Sembast-删除地图中的值



我有一个存储映射对象的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值FieldValue.delete删除字段。

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

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}}

有关更多信息,请查看有关更新字段的文档

最新更新