从 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