Firebase 请求奇怪的行为

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

我想获取与登录用户来自同一家公司的所有用户。

使用

getUsersFromCompany(this.userData.company)
我只能获取用户本身而没有其他人。 手动更改为另一个公司 ID(与 this.userData.company 不同的 ID)时,所有用户都在加载:
getUsersFromCompany('anotherCompanyID)

 getUsersFromCompany(company) {
    return this.afs.collection('users', ref => ref.where('company', '==', company)) 
      .valueChanges({ idField: 'uid' }).pipe(take(1)) as Observable<UserData>
  }

当公司 ID 相同时,似乎会阻止所有用户,但为什么/如何?

我的 Firebase 测试安全规则设置为

 match /users/{userId} {
     allow read: if request.auth != null    
}

持久性曾经开启,现在关闭

javascript google-cloud-firestore firebase-security angularfire
1个回答
0
投票

经过大量测试后,它仍然非常令人困惑。不过好像和 AngularFire 有关系...

我的解决方案:从

切换
getUsersFromCompany(company) {
    return this.afs.collection('users', ref => ref.where('company', '==', company)) 
      .valueChanges({ idField: 'uid' }).pipe(take(1)) as Observable<UserData>
  }

 async getUsersfromCompany(company) {
    const db = getFirestore();
    var users: any = []
    try {

      const q = query(collection(db, "users"), where("company", "==", companyId));

      const querySnapshot = await getDocs(q);

      querySnapshot.forEach(doc => {
        users.push(doc.data())
      })
    } catch (error) {
      console.log(error);
    }
    return users
  }
© www.soinside.com 2019 - 2024. All rights reserved.