[英]get data from firebase document with "where" query without specific doc()
我试图寻找一个文档,其中值“phone”等于用户输入的电话号码
我试过了:
async getUserIdOfPhoneNumber(phone){
this.afs.collection("users", ref => ref.where("phone", "==",phone)).doc().get().toPromise().then(() => {
console.log(res.data())
})
但这带回了未定义,因为我没有在 doc() 中提供 id,我不想提供 id,因为我不知道集合的 id,其中用户输入的电话号码等于所述 doc 中的电话值
删除 doc() function 只会带来不同的混乱。 data() 然后不存在
当您执行查询时,可能会有多个结果。 即使您知道只有一个结果,API 也不知道这一点,因此它返回一个列表。 您的应用程序代码必须处理此列表。
由于我认为这里不需要使用 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()
从可观察对象中获取第一项。 有关更多信息,请参阅: https://www.google.com/search?q=angular+observable+get+first+value
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.