【发布时间】: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