使用 "where" 查询从没有特定 doc() 的 firebase 文档中获取数据
get data from firebase document with "where" query without specific doc()
我正在尝试查找值“phone”等于用户输入的 phone 数字的文档
我试过:
async getUserIdOfPhoneNumber(phone){
this.afs.collection("users", ref => ref.where("phone", "==",phone)).doc().get().toPromise().then(() => {
console.log(res.data())
})
但这会返回未定义,因为我没有在 doc() 中提供 ID,我不想提供 ID,因为我不知道用户输入的 phone 数字相等的集合的 ID到所述文档
中的phone值
删除 doc() 函数只会带来不同的混乱。数据()然后不存在
当您执行一个查询时,可能会有多个结果。即使您知道只有一个结果,API 也不知道这一点,所以它 returns 是一个列表。您的应用程序代码必须处理此列表。
因为我认为这里不需要使用 AngularFire,所以这是在常规 JavaScript SDK(v8 语法)中获取查询结果的方法:
firebase.firestore()
.collection("users")
.where("phone", "==",phone)
.get().then((querySnapshot) => {
querySnapshot.forEach((doc) => {
console.log(doc.id, doc.data());
});
})
既然你知道最多只有一个结果,你也可以这样做:
...
.get().then((querySnapshot) => {
if (!querySnapshot.empty) {
console.log(querySnapshot.docs[0].id, querySnapshot.docs[0].data());
});
})
如果您需要使用 AngularFire 执行此操作(即,如果您想在 UI 中显示文档),您可以使用 first()
从 observable 中获取第一项。有关更多信息,请参阅:https://www.google.com/search?q=angular+observable+get+first+value
我正在尝试查找值“phone”等于用户输入的 phone 数字的文档
我试过:
async getUserIdOfPhoneNumber(phone){
this.afs.collection("users", ref => ref.where("phone", "==",phone)).doc().get().toPromise().then(() => {
console.log(res.data())
})
但这会返回未定义,因为我没有在 doc() 中提供 ID,我不想提供 ID,因为我不知道用户输入的 phone 数字相等的集合的 ID到所述文档
中的phone值删除 doc() 函数只会带来不同的混乱。数据()然后不存在
当您执行一个查询时,可能会有多个结果。即使您知道只有一个结果,API 也不知道这一点,所以它 returns 是一个列表。您的应用程序代码必须处理此列表。
因为我认为这里不需要使用 AngularFire,所以这是在常规 JavaScript SDK(v8 语法)中获取查询结果的方法:
firebase.firestore()
.collection("users")
.where("phone", "==",phone)
.get().then((querySnapshot) => {
querySnapshot.forEach((doc) => {
console.log(doc.id, doc.data());
});
})
既然你知道最多只有一个结果,你也可以这样做:
...
.get().then((querySnapshot) => {
if (!querySnapshot.empty) {
console.log(querySnapshot.docs[0].id, querySnapshot.docs[0].data());
});
})
如果您需要使用 AngularFire 执行此操作(即,如果您想在 UI 中显示文档),您可以使用 first()
从 observable 中获取第一项。有关更多信息,请参阅:https://www.google.com/search?q=angular+observable+get+first+value