【问题标题】:@angular/fire where exists@angular/fire 存在的地方
【发布时间】:2019-04-23 17:38:27
【问题描述】:

我正在获取带有“位置”的 Firestore 文档。我的目标是知道该文档是否已经存在(例如:这是一个集合中的伪文档)但带有 uid。

 var request = this.ms.afs.collection('users', ref => ref.where('uuidsocial', '==', uid)).get().subscribe(users => { 
      if(users.size > 0){
        console.log("exists");
        console.log(users.size);
      }else{
        console.log("doesn't exist");
      }
    });

没用,总是返回1,而且我确定现在不是正确的代码,尝试了很多东西。 非常感谢

【问题讨论】:

  • 你在使用 AngularFirestore 吗?

标签: angular firebase google-cloud-firestore angularfire


【解决方案1】:

更新

正如评论中指出的,显然usersQuerySnapshot。您可以尝试users.empty,尽管我看不出users.size 不起作用的任何原因。我的猜测是,无论出于何种原因,该集合始终至少有一个用户使用uuidsocial === ${whatever your test uid is}。我会尝试console.log(users) 看看你得到了什么。

我想你想要users.length。 Javascript 数组没有 size 属性。

var request = this.ms.afs.collection('users', ref => ref.where('uuidsocial', '==', uid)).get().subscribe(users => { 
  if (users.length > 0){
    console.log("exists");
    console.log(users.length);
  } else {
    console.log("doesn't exist");
  }
});

【讨论】:

  • 你好,当我尝试你的代码时,我得到:Property 'length' does not exist on type 'QuerySnapshot'.ts(2339)
  • @nonoom 啊,我(错误地)假设 users 是一个数组。
【解决方案2】:

你可以这样做:

var docRef = this.ms.afs.collection("users").doc(uid);
docRef.get().then((doc) => {
    if (doc.exists) {
        console.log("Document data:", doc.data());
    } else {
        // doc.data() will be undefined in this case
        console.log("No such document!");
    }
}).catch(function(error) {
    console.log("Error getting document:", error);
});

在此处查看文档:

https://firebase.google.com/docs/firestore/query-data/get-data

也可以通过查询执行此操作:

this.ms.afs.collection('users', (ref) => ref.where('uuidsocial', '==',uid))
    .get()
    .subscribe(user => { if(user.size >= 0) ...do smthg })

【讨论】:

  • 是的,但我使用的是'where'^^
  • @nonoom 查看我更新的答案并告诉我
猜你喜欢
  • 1970-01-01
  • 2019-04-28
  • 2021-08-05
  • 2022-08-09
  • 2021-02-10
  • 1970-01-01
  • 2023-02-20
  • 1970-01-01
  • 2021-10-26
相关资源
最近更新 更多