从 Firestore 和 Flutter 中嵌套在数组中的地图获取数据
Get data from a map nested in a array in Firestore and Flutter
我有一个应用程序,我想在其中检查是否有与某个 uid
的联系人。
问题:
我要检查的 uid
嵌套在数组中的地图中。
Firestore 文档如下所示:
到目前为止我的想法是这样的:
var data = await FirebaseFirestore.instance
.collection("user_contacts")
.doc(FirebaseAuth.instance.currentUser.uid)
.get();
if(data.data()["contacts"].contains({"uid": myUid, "date": myDate})){
...
}
但是我没有date
。还有其他办法吗?
感谢帮助!
我个人建议您尽量远离文档中的数组,尤其是当它们将增长到数百个名称时。如果不小心,您可能会在每次调用时提取不必要的数据。
如果您要更改实现,我建议您创建一个子集合。
根据您当前的实现,您可以使用此功能:
const exists= (arr, val) => {
for(let i=0; i<arr.length; i++){
return arr[i]['uid'] == val;
};
}
其中 arr 是 data.data()["contacts"]
,val 是您想要的 uid
我有一个应用程序,我想在其中检查是否有与某个 uid
的联系人。
问题:
我要检查的 uid
嵌套在数组中的地图中。
Firestore 文档如下所示:
到目前为止我的想法是这样的:
var data = await FirebaseFirestore.instance
.collection("user_contacts")
.doc(FirebaseAuth.instance.currentUser.uid)
.get();
if(data.data()["contacts"].contains({"uid": myUid, "date": myDate})){
...
}
但是我没有date
。还有其他办法吗?
感谢帮助!
我个人建议您尽量远离文档中的数组,尤其是当它们将增长到数百个名称时。如果不小心,您可能会在每次调用时提取不必要的数据。
如果您要更改实现,我建议您创建一个子集合。
根据您当前的实现,您可以使用此功能:
const exists= (arr, val) => {
for(let i=0; i<arr.length; i++){
return arr[i]['uid'] == val;
};
}
其中 arr 是 data.data()["contacts"]
,val 是您想要的 uid