flatter和FIREBASE:如何在地图中增加int?
我使用Flatter+firebase,我有一个问题,在我的db中我有一个2 int数组的“投票”值。我想用这样的方式增加它们:“投票”:[FieldValue.increment(nb1),FieldValue.increment(nb2)],但它不起作用,所以我被卡住了,我不知道如何增加它们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
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不允许您在更新中直接寻址数组元素。您必须读取文档,更新内存中的数组元素,然后写回文档。由于这个限制,数组通常不是很有用。您找到解决方案了吗?如果是,那么请告诉我,我现在正面临同样的困难。