我正在尝试在Firestore中使用数组和地图/对象。我想知道如何从数组中删除特定的地图。 我尝试过这样的事情:
await Firestore.instance.collection('users').document(interestedInID).get().then((val){
return val.data['usersInterested'].removeWhere((item)=>
item['userID'] == userID
);
}).catchError((e){
print(e);
});
但我在终端中收到此错误:
Unsupported operation: Cannot remove from a fixed-length list
我真的不明白这意味着什么。我做了一些谷歌搜索,固定长度的列表正是它所说的。这是一个具有固定长度的列表,不能更改,但是必须明确声明固定长度的列表。另一方面,无需声明可增长列表。 我尚未在Firestore中声明定长列表,但一直说我无法从中删除元素。我可以添加/推送元素,然后使用以下命令将其删除:
'key': FieldValue.arrayRemove([value])
但是我不知道如何根据特定条件删除元素。在这种情况下,为用户ID。
有什么建议吗? 非常感谢!
答案 0 :(得分:0)
这可能是一种解决方法:
Array
List
Map
中删除特定的List
// make a reference List
List<Map> _modifiedUsersInterested = List();
// ... (fetch your Array first from Firebase, put those items in the reference List)
// remove the right Map from the reference List
_modifiedUsersInterested.removeWhere((item) => {
item['userID'] == userID
});
// set the reference List as your array in Firebase
await Firestore.instance
.collection('users')
.document(interestedInId)
.updateData(
{'usersInterested': _modifiedUsersInterested}
);