Javascript 在Angular Firestore查询中,get()和valueChanges()之间有什么区别?

Javascript 在Angular Firestore查询中,get()和valueChanges()之间有什么区别?,javascript,angular,typescript,firebase,google-cloud-firestore,Javascript,Angular,Typescript,Firebase,Google Cloud Firestore,正如标题所说,我想问一下在Angular Firestore中执行查询时get()和valueChanges()之间有什么区别(如果有) 在读取/成本方面,两者之间是否也存在任何优势/劣势?valueChanges()用于库angularfire2。根据报告: 返回可观察的文档数据。将剥离所有快照元数据。此方法仅提供数据 如果正在执行角度项目,则可以使用库angularfire2,其中包含方法valueChanges() 也用于检索单个文档的内容。值更改和get()之间的主要区别在于,使用ge

正如标题所说,我想问一下在Angular Firestore中执行查询时get()和valueChanges()之间有什么区别(如果有)

在读取/成本方面,两者之间是否也存在任何优势/劣势?

valueChanges()
用于库angularfire2。根据报告:

返回可观察的文档数据。将剥离所有快照元数据。此方法仅提供数据

如果正在执行角度项目,则可以使用库
angularfire2
,其中包含方法
valueChanges()



也用于检索单个文档的内容。

值更改和
get()
之间的主要区别在于,使用
get()
,您只能一次,而
值更改
(和
快照更改
)每当链接到您正在侦听的文档/集合的数据库中发生更改时,将自动激发

后者是firebase实时数据库的优点,因为您不需要投票或其他任何方式来获取最新数据,firebase会处理好所有这些

在我看来,
get()
非常有用,例如,当您更新集合中的文档,然后在更新后立即想要对该文档执行某些操作,并且只提取一次,例如:

const docRef=this.afs.collection(colId).doc(docId).set(…)
docRef.get()管道(
映射(doc=>doc.data())
)
.订阅(数据=>{
//处理文件
})
当然,您可以使用例如
valueChanges
调用文档,并附加一个
管道(take(1))
,但是在这种情况下
get()
非常方便