Firestore:更新对象中的字段会删除上一个字段

时间:2018-09-18 16:30:34

标签: firebase dart flutter google-cloud-firestore

我正在使用Flutter Cloud Firestore。这是我的数据库的样子。

enter image description here

我想在a_numbers对象中添加更多字段(例如“ 2222”)。我这样使用updateData()

DocumentReference ref = Firestore.instance.document("products/-LMhR5cAyW4T0sa03UtU");
ref.updateData({"a_numbers": {"2222" : false}});

以上代码段基本上删除了先前的值(1111),然后使用2222字段更新了数据库。

有解决方案吗?

2 个答案:

答案 0 :(得分:0)

这是预期的行为,在Flutter应用程序中,您需要将a_numbers存储在Map中,并使用(key,value)添加任何新的myMap.addAll({key:value})对,然后您可以使用ref.updateData(myMap)

答案 1 :(得分:0)

要在不删除先前值的情况下使用对更新“ a_numbers”,您应将引用路径(例如:“ a_number.2222”)分配给K,并将值分配给V。我编辑了代码。请查看以获取更多信息。

DocumentReference ref = Firestore.instance.document("products/-LMhR5cAyW4T0sa03UtU");
ref.updateData({'a_numbers.2222': value});