[英]Firebase-admin Firestore node.js share logic with modular v9 js sdk
[英]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.