Firestore 查询监听器能否"listen"云函数?



当用户打开应用程序时,如果auth.currentuser不为null,那么我需要查询用户的用户名。我认为查询侦听器是有意义的,因为我不想每次代码请求用户名时都ping服务器。我查看了他们提供的Firebase文档,例如:

val docRef = db.collection("cities").document("SF")
docRef.addSnapshotListener { snapshot, e ->
if (e != null) {
Log.w(TAG, "Listen failed.", e)
return@addSnapshotListener
}
val source = if (snapshot != null && snapshot.metadata.hasPendingWrites())
"Local"
else
"Server"
if (snapshot != null && snapshot.exists()) {
Log.d(TAG, "$source data: ${snapshot.data}")
} else {
Log.d(TAG, "$source data: null")
}
}

然而,有人建议我尽量少用客户端代码来优化安全性,所以前面提到的例子让我担心。是否可以使用查询侦听器来侦听可以输出用户名的服务器端函数,这样我仍然可以利用只运行一次查询的优势,即将用户名保存到客户端缓存中?

云函数是短暂的,您需要为它们的活动时间付费。您不能像Firestore服务器和SDK使用的快照侦听器那样,长时间打开来自云函数的连接。

虽然完全可以在云函数中封装对Firestore的访问,但这将遵循更传统的请求/响应模型。

我建议退房:

  • Doug的博客文章:Firebase的安全模式:将客户端工作卸载到云功能
  • Doug的博客文章:Firebase的安全模式:将规则与云功能相结合以获得更大的灵活性

最新更新