【问题标题】:How can get only want object value from firestore by react native如何通过本机反应从firestore中获取只想要的对象值
【发布时间】:2022-01-22 01:00:27
【问题描述】:

我尝试只获取我想要的对象值,但是每当我在 where() 中使用数组包含进行查询时,都会从该集合中取出所有数据值。

getid Array [
  Object {
    "timestamp": Object {
      "nanoseconds": 738000000,
      "seconds": 1639994269,
    },
    "userMatch": Array [
      "6Lf5bHwzCSbI2bmoMv7KuduMGwe2",
      "E8R52y6dD8XI3shXhnhS9pVzUpe2",
    ],
    "users": Object {
      "6Lf5bHwzCSbI2bmoMv7KuduMGwe2": Object {
        "about": "gshjs",
        "age": "25",
        "displayName": "ry",
        "gender": "female",
        "id": "6Lf5bHwzCSbI2bmoMv7KuduMGwe2",
        "interestIn": "male",
        "job": "fh",
        "photo": "https://firebasestorage.googleapis.com/v0/b/match-me-now.appspot.com/o/images%2F6Lf5bHwzCSbI2bmoMv7KuduMGwe2%2FprofilePicture.jpeg?alt=media&token=e1b8d794-4074-4e10-93f1-e2f5c9835fa2",
        "timestamp": Object {
          "nanoseconds": 44000000,
          "seconds": 1639994173,
        },
      },
      "E8R52y6dD8XI3shXhnhS9pVzUpe2": Object {
        "about": "fdhnsn",
        "age": "25",
        "displayName": "gsj",
        "gender": "male",
        "id": "E8R52y6dD8XI3shXhnhS9pVzUpe2",
        "interestIn": "female",
        "job": "hsh",
        "photo": "https://firebasestorage.googleapis.com/v0/b/match-me-now.appspot.com/o/images%2FE8R52y6dD8XI3shXhnhS9pVzUpe2%2FprofilePicture.jpeg?alt=media&token=b93935cf-8285-4059-8495-2243fdb89fff",
        "timestamp": Object {
          "nanoseconds": 201000000,
          "seconds": 1639994235,
        },
      },
    },
  },
]

我只想要 userMatch (E8R52y6dD8XI3shXhnhS9pVzUpe2) id 值

"userMatch": Array [
      "6Lf5bHwzCSbI2bmoMv7KuduMGwe2",
      "E8R52y6dD8XI3shXhnhS9pVzUpe2",
    ],

我按如下方式获取

  
    useEffect(async()=>{
      const matchid = query(collection(db,'matches'),where('userMatch','array-contains',user.uid))
      const getid = await getDocs(matchid).then((snapshot)=>snapshot.docs.map((doc)=>doc.data()))
       
      console.log('getid',getid)


    },[db])

为什么不在 userMatch 对象中只获取 user.uid。 虽然 where() 方法过滤 'userMatch' 对象字段,为什么要获取匹配集合中的所有对象字段。如何只能获取 userMatch 对象值。 请帮忙

【问题讨论】:

    标签: javascript reactjs react-native google-cloud-firestore


    【解决方案1】:

    Firestore 客户端 SDK 始终返回整个文档。他们无法只检索文档的某些字段。

    查询(如您在此处使用的array-contains 可用于限制从数据库返回的文档,但不限制返回的字段。


    如果您通常发现只需要较大文档中的某些字段,请考虑将这些字段存储在单独的文档中。虽然您会复制数据,但在需要时需要读取的数据会更少。

    在您的用例中,您还可以考虑将userMatches 存储在每个用户文档的子集合中,然后使用collection group query 查找相关文档。


    另见:

    【讨论】:

      猜你喜欢
      • 2019-12-11
      • 1970-01-01
      • 2019-02-01
      • 1970-01-01
      • 2020-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多