Javascript 在Angular Firestore查询中,get()和valueChanges()之间有什么区别?
正如标题所说,我想问一下在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
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()
非常方便