尝试计算和计算Firestore读取计数时遇到了一些问题。即使只有大约15个用户文档,firestore的读取计数始终以非常高的速度激增(每次我重新加载页面时,计数都会递增100)。即使当我不重新加载页面时,firestore读取计数本身也会增加,这是由于订阅行为导致读取数据操作不时刷新吗? (我读过一些文章,建议用户仅一次提取数据就使用“一次”。)
以下是代码段(ts):
// All buddy users from Firebase
private usersCollection: AngularFirestoreCollection<Profile>;
users: Observable<Profile[]>;
usersFirebase: Profile[] = [];
getUserDataFromFirebase() {
this.isImageLoading = false;
this.users.subscribe(async results => {
var ref;
for(let result of results) {
if(result.imageName) {
ref = this.store.ref('images/' + result.userId + '/profiles/' + result.imageName);
} else {
// Get default image is image not existing
ref = this.store.ref('images/ironman.jpg');
}
await ref.getDownloadURL().toPromise().then(urlString => {
result.profileURL = urlString;
// Change availibility date from timestamp to date format
try {
result.availability = this.datePipe.transform(result.availability.toDate(), 'yyyy-MM-dd');
} catch (error) {}
result.flip = 'inactive';
if(result.identity == 'Tenant')
{
this.usersFirebase.push(result);
}
return new Promise((resolve, reject) => {
resolve();
})
});
}
console.log(this.usersFirebase);
});
}
firestore读取计数是如何工作的,计数的增加是否基于文档查询,它会在一定时间后继续自行查询吗? Firestore read count increases more than users documents
答案 0 :(得分:0)
读取次数集中在检索到的文档数上。
让我们设置以下4种情况:
collection("users").get()
调用:您将获得
返回10份员工文档,并收取10读费用。collection("users").get()
调用:您将获得10,000个用户,并按10,000次读取收费。collection("users").get().limit(10)
呼叫:您将获得10位用户,并为10次读取收取费用。collection("users").where("first_name", "==", "Carl")
调用,您将获得4个用户并被收取15次读取费用。另一方面,如果您正在听整个集合users
(没有where()或.orderBy()子句),并且您有一个活动的onSnapshot()侦听器,那么您将被收取文档费用每次在集合users
中添加,更改或删除新文档时进行读取操作。
在检查读取操作时,您可能想查看一下工作流程,以检查其他过程是否正在对集合进行更改。
最后,要记住的是,报告中的读取操作可能与计费和配额使用情况不匹配。 Public Issue Tracker中有一项功能请求已实现此查询-在Firestore上读取:here。您可以"star"并将其设置为notifications以获得更新。另外,如有必要,您可以创建一个新的。