繁体   English   中英

firebase JS SDK 包是否与云函数的 Node.js 环境兼容? 为什么要使用 firebase-admin?

[英]Is the firebase JS SDK package compatible with the Node.js environment of a cloud function? Why use firebase-admin?

我知道如果您在服务器环境中,使用firebase-admin SDK 可能更有意义,这将授予您在可信环境中的管理员状态,例如来自云功能的环境。

但是这两个包总是让我感到困惑: firebase JS SDK 和firebase-admin

请参阅firebase JS SDK 的摘录

https://www.npmjs.com/package/firebase

此 SDK适用于从 Web 、移动 Web(例如 React Native、Ionic)、 Node.js 桌面(例如 Electron)或运行 Node.js 的 IoT 设备等环境中的最终用户客户端访问 如果您对使用 Node.js SDK 感兴趣,它授予您从特权环境(如服务器)的管理员访问权限,您应该使用 Firebase Admin Node.js SDK。

很长一段时间,我认为firebase JS SDK与云函数的Node.js环境完全不兼容,并且仅仅存在或简单地import * as firebase from "firebase/app"; 可能会破坏我的函数代码。 但我今天了解到事实并非如此。 是吗?

理论上,我可以使用firebase包从云函数的 Node.js 环境调用 firebase 服务吗?

除了拥有管理员权限,如果我只想做一个简单的任务,比如阅读firestore文档,有什么理由让我更喜欢使用firebase-admin而不是firebase JS SDK 包吗?

您可以在 Node.js 环境中使用firebase来访问某些服务。 但是,这些服务呼叫将被视为由最终用户发出。 这意味着 Firebase 后端服务器中的所有安全规则、每用户请求配额和滥用预防机制都会发挥作用。 如果您的规则只允许经过身份验证的用户访问 Firestore,那么您必须在调用 Firestore 之前以服务器中的最终用户身份进行身份验证。 每次调用云函数都必须这样做,因为函数不保持状态。 从同一个 IP 块运行如此多的身份验证尝试可能最终会触发一些滥用预防措施,并导致错误。

根据经验,对客户端应用程序使用客户端 SDK,对服务器端应用程序使用服务器/管理 SDK。 有时您可能想要改变这条规则。 但这应该是与规范相反的例外情况,并且只有在仔细考虑之后才应该这样做。

理论上,我可以使用 firebase 包从云函数的 Node.js 环境调用 firebase 服务吗?

Firebase 提供的 Firestore Web SDK 不适用于 nodejs 环境。 如果它碰巧起作用,那么我会认为这是一种奖励。 但我完全不会期望,而且我绝对不会依赖它。

有什么理由让我更喜欢使用 firebase-admin 而不是 firebase JS SDK 包吗?

主要原因是因为 firebase-admin 专门支持 nodejs。 这就是它的工作方式。 Admin SDK 只是Google Cloud 提供Firestore SDK的包装器。 一旦你有了 Firestore 对象,它就是完全一样的东西。

正如我在您的另一个问题中提到的,SDK 可能看起来相似,但它们并不相同。 它们没有相同的功能和 API。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM