如何为对象数组编写 firestore 查询过滤器?
How write firestore query filter for array of objects?
我正在 React Native 中编写一个查询,通过按好友名称过滤好友,从 firestore 获取数据...比如获取所有用户,其中 friendName 是 XYZ
[
{User: 'Johan', friends:[{friendName: 'ABC', age:20}, {friendName: 'DEF', age:30},{friendName: 'XYZ', age:25}]},
{User: 'Johnson', friends:[{friendName: 'ABC', age:20}, {friendName: 'XYZ', age:25}]},
{User: 'Symonds', friends:[{friendName: 'DEF', age:30},{friendName: 'XYZ', age:25}]}
]
我正在尝试使用这样的代码,但无法正常工作。正如我需要提到的那样,要使用 friendName 进行过滤,但无法找到如何在查询中编写它。
usersRef
.doc(userId)
.collection("Users")
.where('friends', 'array-contains','ABC')
.get();
据我所知,您不能查询对象内部的字段。我的方法是查询用户的 ID,然后迭代结果数组。
//First make a query
let resultsArray=[]
usersRef.doc(userId).collection("Users").get().then((docs)=>{
this.resultsArray.push(docs)
})
//after query is done, iterate results
this.resultsArray.foreach((item)=>{
item.data().friends.foreach((friend)=>{
if(friend.friendName === 'ABC'){
//yes, your friend name is ABC, do whatever you need.
}
)
})
我正在 React Native 中编写一个查询,通过按好友名称过滤好友,从 firestore 获取数据...比如获取所有用户,其中 friendName 是 XYZ
[
{User: 'Johan', friends:[{friendName: 'ABC', age:20}, {friendName: 'DEF', age:30},{friendName: 'XYZ', age:25}]},
{User: 'Johnson', friends:[{friendName: 'ABC', age:20}, {friendName: 'XYZ', age:25}]},
{User: 'Symonds', friends:[{friendName: 'DEF', age:30},{friendName: 'XYZ', age:25}]}
]
我正在尝试使用这样的代码,但无法正常工作。正如我需要提到的那样,要使用 friendName 进行过滤,但无法找到如何在查询中编写它。
usersRef
.doc(userId)
.collection("Users")
.where('friends', 'array-contains','ABC')
.get();
据我所知,您不能查询对象内部的字段。我的方法是查询用户的 ID,然后迭代结果数组。
//First make a query
let resultsArray=[]
usersRef.doc(userId).collection("Users").get().then((docs)=>{
this.resultsArray.push(docs)
})
//after query is done, iterate results
this.resultsArray.foreach((item)=>{
item.data().friends.foreach((friend)=>{
if(friend.friendName === 'ABC'){
//yes, your friend name is ABC, do whatever you need.
}
)
})