这是从在离子项目中实现和使用Google的云防火墙开始的,
离子:
离子CLI : 6.19.0 (C:\Users\Windows 10\AppData\Roaming\npm\node_modules@ionic\cli)离子框架)
@离子型/角形6.1.9 @角-devkit/build-角: 14.0.1
@角-devkit/示意图: 14.0.1 @角/cli
14.0.1 @离子/角度-工具包: 6.1.0
电容器:
电容器CLI : 3.5.1 @电容器/android: 3.5.1
@电容器/磁芯: 3.5.1 @电容器/ios:未安装
效用:
cordova-res : 0.15.4原生运行: 1.6.0
系统:
NodeJS : v16.14.2 (C:\Program Files\nodejs\node.exe) npm :8.5.0OS: Windows 10
我已经安装了所有的库,并配置了到firebase中的项目连接。我正在对根集合执行一个简单的读取查询,以获得该集合中的所有文档,这包括400个文档,我将检查firebase控制台中的存储云使用统计数据,我看到有800个操作在读取中执行,我还观察到,在任何写入操作中,记录的操作也是统计数据中的两倍,这与操作的类型无关,但它总是记录双倍。有谁知道它注册的原因或为什么要注册两倍的操作吗?
app.component.ts
import { Observable } from 'rxjs/Observable';
import { FirebaseService } from './../../services/firebase/firebase.service';
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
})
export class AppComponent implements OnInit {
items: Observable<any[]>;
constructor(
private firebase: FirebaseService
) { }
async ngOnInit() {
this.items = await this.firebase.firestore.collection('items').valueChanges();
}
}app.component.html
<ion-content >
<pre> {{items | async | json }} </pre>
</ion-content>使用度量


注意:实际上只进行了一次查询,读取操作在2分钟内被记录下来。11:18和11:19总共读取了800个操作.
发布于 2022-07-15 20:45:05
这是因为方法: valueChanges()
它可能会改变两次,您的订阅正在做它应该做的事情。你只是没有处理那个案子。要么谴责它,要么过滤它,如果没有变化。
this.items = this.firestore.collection('items').valueChanges()
.pipe(
debounceTime(300);
)
.subscribe(data => { });另外,您还有点订阅,但不执行取消订阅--基本上,该方法读取数据,然后检查是否更改了任何值。因此,当组件破坏时,您需要“关闭”destroys,以避免双重呈现o调用DOM的每个呈现。
async ngOnDestory() {
this.items.unsubscribe();
}https://stackoverflow.com/questions/72998949
复制相似问题