已弃用:请参阅已接受的答案。
一些需要注意的细节:
- Firebase 存储不再与 Node.js 一起使用,因此所有文档对 Node.js 都没有用。相反,使用
google-cloud
. 到目前为止,Firebase 和 Google Cloud 的参考和指南并未反映这一点。
- 与 Firebase 不同,google-cloud 需要花钱,即使是小型项目也是如此。
- 就我而言,我使用的是
firebase-admin
SDK,因此我目前不必处理用户身份验证。
目的
创建一个使用 Firebase 和 Google Cloud 的 Node.js 项目。为什么?Firebase 有一个有用的数据库以及其他功能,而 Google Cloud 允许云文件存储和检索。
路线
第 1 步:项目创建
创建Firebase和Google Cloud(存储)项目。
第 2 步:安装软件包
使用npm,安装firebase-admin
并google-cloud
在Node.js
项目中。
注意 1:我使用了 admin SDK,因此在创建 Firebase 项目后,您需要转到:
- 设置(齿轮)>项目设置>服务帐户> Firebase Admin SDK
- 然后您:选择
Node.js
> [将生成的代码复制/粘贴到您的项目中] > [单击“生成新的私钥”] > [将生成的下载json
到首选位置] > [替换
"path/to...AccountKey.json"
为您刚刚生成的密钥的路径]
注 2:生成的密钥可以在 firebase 或 google-cloud 凭据中重复使用。
第 3 步:Firebase 设置
创建项目后,导入firebase-admin
sdk:
代码应如下所示,但填充了您的信息:
var admin = require("firebase-admin");
admin.initializeApp({
credential: admin.credential.cert("/path/to/generated/json/here.json"),
databaseURL: "database-url-from-firebase"
});
要查找 databaseURL,请转到 Firebase 中的“存储”,并记下以开头的 URLgs:
并将其复制/粘贴到 databaseURL 的值字段。
接下来,获取对您可以使用的数据库的引用:
var db = admin.database();
var ref = db.ref("/");
console.log('DB ref: ' + ref); //just to debug, if undefined, there's a problem.
要了解有关读取/写入数据库的更多信息,请遵循Firebase 自己的文档。
第 4 步:Google-Cloud 计费设置
在谷歌云上创建项目后,添加账单信息;如果没有帐单信息,则无法使用存储桶。
第 5 步:Google-Cloud Storage 设置
- 滚动菜单(水平 3 条),单击“存储”,然后单击“启用计费”。是的,您添加了账单信息,现在您需要为该项目的存储桶启用它。
- 您应该会看到您的 Firebase 项目中应该已经存在一个存储桶。
- 再次单击菜单(3 条图标),然后 > IAM 和管理>设置
- 在设置中,您将看到“项目 ID”,它应该类似于“projectName-00000”或“projectName-Some#”,复制该项目 ID
第 6 步:Node.js 中的 Google Cloud
在您的index.js
:
var gcloud = require('google-cloud');
var gcs = gcloud.storage({
projectId: 'paste-that-project-id-here',
keyFilename: 'paste-that-path-to-the-previously-downloaded-json-from-firebase-here'
});
现在您可以通过以下方式将文件发送到您的存储:
var bucket = gcs.bucket('bucket_name');
var remoteFile = bucket.file('somefile-inThisCaseASong.mp3');
var localFilename = '/Users/you/Music/somefile-inThisCaseASong.mp3';
bucket.upload(localFilename, function(err, file) {
if (!err) {
console.log('somefile-inThisCaseASong.mp3 is now in your bucket.');
} else {
console.log('Error uploading file: ' + err);
}
});
第 7 步:验证
如果该文件在 Firebase Storage 和 Google Cloud Storage 中可见,那么您就大功告成了!