繁体   English   中英

使用“where”查询从 firebase 文档中获取数据而没有特定的 doc()

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM