@ angular / fire存在于哪里

问题描述 投票:0回答:2

我正在获取一个带有'where'的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,我确定现在不是正确的代码,尝试过很多东西。非常感谢

angular firebase google-cloud-firestore angularfire
2个回答
1
投票

Update

正如评论中指出的那样,显然users是一个QuerySnapshot。你可以尝试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");
  }
});


0
投票

你可以这样做:

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 })
© www.soinside.com 2019 - 2024. All rights reserved.