[英]Count number of documents with a particular field in a collection Firestore Flutter
[英]How To Count Number of Documents in a Collection in Firebase Firestore With a WHERE query in react.js
我想获取我的 Firebase Firestore 集合中的用户总数。 我可以通过编写这段代码轻松获得它:
const [totalUsers, setTotalUsers] = useState(0);
const [newUsers, setNewUsers] = useState(0);
useEffect(() => {
firebase.firestore().collection("Users").get().then((querySnapshot) => {
const TotalUsers = querySnapshot.size
setTotalUsers(TotalUsers)
})
}, []);
但我想要的是获得具有以下条件的用户总数:
// this is not working, its not showing any results back.
useEffect(() => {
firebase.firestore().collection("Users").where("usersID","!=","101010").get().then((querySnapshot) => {
querySnapshot.forEach((doc) => {
const TotalUsers = doc.size
setTotalUsers(TotalUsers)
})
})
}, []);
但是上面的代码不起作用并且没有返回任何结果。
如何使用 where 查询获取 firebase firestore 中集合中的文档总数?
您已将计数操作移动到一个循环中,这是不需要的。
相反,只需将条件添加到您的读取操作并保持 rest 相同:
useEffect(() => {
firebase.firestore().collection("Users").where("usersID","!=","101010").get().then((querySnapshot) => {
const TotalUsers = querySnapshot.size
setTotalUsers(TotalUsers)
})
}, []);
请注意,读取所有用户文档只是为了确定它们的计数是一种昂贵的方法,因此我建议阅读有关聚合运算符的文档,以及 Dan 在Cloud Firestore 集合计数中对文档计数的回答
进一步@Chaitra 的回答。
使用下面的代码将为您提供带有查询的文档计数。
import { collection, Firestore, getCountFromServer, query, where } from '@angular/fire/firestore';
{...
totalUsers: any;
constructor(
private fs: Firestore
){}
onInit() {
this.getUserCount()
}
async getUserCount() {
const usersCol = collection(this.fs, `users`)
const chkQuery = query(chkCol, where('usersID', '!=', '101010'))
const count = await getCountFromServer(chkQuery)
this.totalUsers = (await count).data().count
}
...}
然后在您的 HTML 模板中:
<h2>User Count: {{totalUsers}}</h2>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.