我想获取与登录用户来自同一家公司的所有用户。
使用
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
}
持久性曾经开启,现在关闭
经过大量测试后,它仍然非常令人困惑。不过好像和 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
}