如何更新数组中的地图数据?扑火基地

时间:2020-04-28 23:14:28

标签: arrays firebase flutter dart google-cloud-firestore

我用Flutter。我想仅在26/4/2020的一周中将Firebase中的CH的值更新为false。什么时候有办法?

失败的密码:

_firestore.collection('member').document(uidMember[index])
.updateData({'statistics': [{'${submit}': val,}]});

enter image description here

2 个答案:

答案 0 :(得分:2)

鉴于您共享的Firestore代码段,您可以执行以下代码来更新数据:

var ref = _firestore.collection('member').document(uidMember[index]);
ref.get() => then(function(snapshot) {
    List<dynamic> list = List.from(snapshot.data['statistics']);
    //if you need to update all positions of the array do a foreach instead of the next line
    list[0].CH = false;
    ref.updateData({
        'statistics': list
    }).catchError((e) {
        print(e);
    });
}.catchError((e) {
    print(e);
});

注意:我尚未对此进行测试,因此您可能需要对其进行调整,但这应该是一个很好的起点。

答案 1 :(得分:0)

首先创建一个包含更新项目的 List。使用列表创建一个 Map,然后将此映射更新到 Cloud Firestore:

List<Map<String, dynamic>> updatedList = [...];
Map<String, dynamic> updatedData = {
  'statistics': updatedList,
};
  
var collection = FirebaseFirestore.instance.collection('collection');
collection 
    .doc('doc_id')
    .update(updatedData);