Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
flatter和FIREBASE:如何在地图中增加int?_Firebase_Flutter_Google Cloud Firestore - Fatal编程技术网

flatter和FIREBASE:如何在地图中增加int?

flatter和FIREBASE:如何在地图中增加int?,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我使用Flatter+firebase,我有一个问题,在我的db中我有一个2 int数组的“投票”值。我想用这样的方式增加它们:“投票”:[FieldValue.increment(nb1),FieldValue.increment(nb2)],但它不起作用,所以我被卡住了,我不知道如何增加它们 Future vote(String voteid) async { List<dynamic> listvote = []; List<dynamic> v

我使用Flatter+firebase,我有一个问题,在我的db中我有一个2 int数组的“投票”值。我想用这样的方式增加它们:“投票”:[FieldValue.increment(nb1),FieldValue.increment(nb2)],但它不起作用,所以我被卡住了,我不知道如何增加它们

  Future vote(String voteid) async {
    List<dynamic> listvote = [];
    List<dynamic> vote1 = [];
    List<dynamic> vote2 = [];
    List<dynamic> votevierge = [];
    var vote = nomines.indexOf(voteid);
    int nb1 = 0;
    int nb2 = 0;

    final snapShot =
        await Firestore.instance.collection('rooms').document(pincode).get();
    if (snapShot != null) {
      listvote = snapShot.data['Votes'];
      vote1 = snapShot.data['Vote1'];
      vote2 = snapShot.data['Vote2'];
      listvote[vote] = listvote[vote] + 1;
      if (vote == 0) {
        votevierge = List.from(vote1);
        votevierge.add(nameid);
        nb1 = 1;
      } else {
        votevierge = List.from(vote2);
        votevierge.add(nameid);
        nb2 = 1;
      }
      vote++;
      Firestore.instance.collection('rooms').document(pincode).updateData({
        'Votes': [FieldValue.increment(nb1), FieldValue.increment(nb2)],
        'Vote$vote': votevierge,
      });
    }
  }
未来投票(字符串voteid)异步{
列表投票=[];
列表vote1=[];
列表vote2=[];
列表votevierge=[];
var投票=提名指数(voteid);
int nb1=0;
int nb2=0;
最终快照=
等待Firestore.instance.collection('rooms').document(pincode.get();
如果(快照!=null){
listvote=snapShot.data['Votes'];
vote1=snapShot.data['vote1'];
vote2=snapShot.data['vote2'];
listvote[投票]=listvote[投票]+1;
如果(投票=0){
votevierge=List.from(vote1);
votevierge.add(nameid);
nb1=1;
}否则{
votevierge=List.from(vote2);
votevierge.add(nameid);
nb2=1;
}
投票++;
Firestore.instance.collection('rooms').document(pincode.updateData({
“投票”:[FieldValue.increment(nb1),FieldValue.increment(nb2)],
“投票$Vote”:votevierge,
});
}
}

这种语法根本不起作用。Firestore不允许您在更新中直接寻址数组元素。您必须读取文档,更新内存中的数组元素,然后写回文档。由于这个限制,数组通常不是很有用。您找到解决方案了吗?如果是,那么请告诉我,我现在正面临同样的困难。