我一直在使用Firebase身份验证和Cloud Firestore作为数据库进行React项目,并且正在阅读正式文档。但是我对是否使用移动/ Web SDK和服务器客户端库的想法感到困惑,而且恐怕我对Cloud Firestore安全规则可能会有一些误解。
Mobile and web SDKs
,另一种是通过Server client libraries
。如果我使用的是Mobile and web SDKs
,那么我的项目将被归类为serverless
,因为我只是在构建前端,并让Goole处理数据库和用户身份验证。使用Firestore的另一种方式是Server client libraries
,似乎它打算与您自己的服务器一起使用。然后在本节中将其称为client libraries
,但是我不太了解的是, client 在这里是什么意思?我确信这与“ 移动和Web SDK支持无服务器应用架构(其中客户端直接连接到您的Cloud Firestore数据库。”)没有什么不同,我假设客户是正在浏览您的网站或Web应用程序的最终用户。那么,客户在Server client libraries
中意味着什么? 由于我只能构建前端应用程序或客户端应用程序,所以我想应该使用Mobile and web SDKs
选项来开始使用Firebase。这是第二个问题,当为我的Cloud Firestore安全规则选择启动模式时,有两种模式:Test mode
和Locked mode
。对于Test mode
,它说“ 非常适合使用移动和网络客户端库,但是任何人都可以读取和覆盖您的数据。测试后,请务必检查保护您的数据部分。”。我的第一个困惑是,客户端库是否引用了我之前提到的Server client libraries
?如果是这样,作为没有服务器的无服务器项目,从技术上讲,我不能选择此模式?然后,对于Locked mode
,它说:“ 拒绝从移动和Web客户端进行的所有读取和写入。您已通过身份验证的应用程序服务器(C#,Go,Java,Node.js,PHP,Python或Ruby)仍然可以访问您的数据库”。同样,此选项似乎不适合我,因为它提到了您已通过身份验证的应用服务器,并且对于我的项目,我没有服务器,或者该服务器已打开谷歌云平台。如果我理解错误,请有人纠正我。另外,如果我选择加入Test mode
,我想它允许任何人读取和覆盖我的数据。但是我觉得这里的 任何人 一词需要更多的解释。我认为至少该人需要像我的项目一样具有准确的Firebase配置。像这样
const config = {
apiKey: "myapikey",
authDomain: "my-auth-domain.firebaseapp.com",
databaseURL: "my-db-url.com",
projectId: "my-pid",
storageBucket: "my-storage-bucket",
messagingSenderId: "my-sender-id",
};
访问我的数据库。我认为,任何人,这里的意思是任何拥有此配置文件的人,无需登录我的项目即可与我的数据库混为一谈。这是我的理解,有人可以纠正我吗?最后,以我为例,我只希望可以登录到我的项目的任何人都可以访问数据库(读和写)。我应该使用哪种模式(test
或locked
)?还是为此需要更多配置?
是真的,无论我选择web SDKs
还是Server client libraries
来启动我的Firestore项目,我都需要使用firebase-admin
吗?但是我是否需要使用Firebase CLI
来将项目init
用作具有自动生成的firebase.json
的firebase项目?
web
和node.js
一词,例如这张图片。 。我实际上不知道它们的确切含义。如果我正在编写React,我应该选择web
还是node.js
?如果它属于web
,那么我将在我的react项目中导入import firebase from "firebase/app";
之类的东西,这些也是Node.js
的模块。再次让我感到困惑。我知道阅读本书的时间可能太长了,问题可能有点琐碎,但我真的很感谢有人能消除我对firebase的困惑。
答案 0 :(得分:0)
据我所知,这是您的问题的答案:
1)那么,客户端在服务器客户端库中意味着什么?
服务器客户端库用于从运行Java,Python,Go等的服务器访问Firebase。
2)我应该使用哪种模式(测试或锁定)?或者我需要更多 配置呢?
测试模式向公众开放您的数据库,这意味着任何用户都无需身份验证即可访问您的数据库。
锁定模式默认使数据库保持锁定状态。然后,您可以添加规则以授予对某些读取或写入的访问权限。
我建议以此开始一个项目,然后配置Firestore安全规则以根据您的应用程序需求打开对数据库的访问。您可以在这里找到参考:https://fireship.io/snippets/firestore-rules-recipes/
在npm上可用的3)是我选择Web SDK还是Server客户端库,这是真的吗? 要启动我的Firestore项目,我需要使用firebase-admin吗?但是我呢 需要使用Firebase CLI将我的项目初始化为Firebase项目 自动生成的firebase.json?
firebase-admin是Firebase Admin Node.js SDK,用于以管理员权限访问您的firebase数据库。当您初始化/访问数据库中应用程序特定的配置和参数时,这很有用。
您不需要Firebase命令行即可初始化您的firebase项目并生成firebase配置文件。在Firebase中创建项目后,即可通过项目的Firebase控制台访问它。参考:https://support.google.com/firebase/answer/7015592?hl=en
4)如果我正在编写React,应该使用web还是node.js?
您应该使用Web,因为node.js SDK用于从Node.js中的特权环境(例如服务器或云)访问Firebase服务。
参考:https://www.npmjs.com/package/firebase
附加点:在Google的FIrebase SDK文档中为React找到了这一点。 https://github.com/tylermcginnis/re-base
希望现在更清晰。