目前没有node.js Firebase存储客户端(太糟糕了......),所以我转向使用Firebase控制台中的参数的gcloud-node .
我尝试着 :
var firebase = require('firebase');
var gcloud = require('gcloud')({
keyFilename: process.env.FB_JSON_PATH,
projectId: process.env.FB_PROJECT_ID
});
firebase.initializeApp({
serviceAccount: process.env.FB_JSON_PATH,
databaseURL: process.env.FB_DATABASE_URL
});
var fb = firebase.database().ref();
var gcs = gcloud.storage();
var bucket = gcs.bucket(process.env.FB_PROJECT_ID);
bucket.exists(function(err, exists) {
console.log('err', err);
console.log('exists', exists);
});
地点:
-
FB_JSON_PATH
是为使用Firebase Server SDK而生成的JSON文件的路径 -
FB_DATABASE_URL
类似https://app-a36e5.firebaseio.com/ -
FB_PROJECT_ID
是Google控制台中firebase项目的名称:"app-a36e5"
存储桶的ID为 FB_PROJECT_ID
(在Firebase的控制台中,存储选项卡显示gs://app-a36e5.appspot.com)
当我运行此代码时,我得到:
err null
exists false
但没有其他错误 .
我至少期待 exists true
.
一些额外的信息:我可以查询数据库(所以我想JSON文件是正确的),我已经设置了如下存储规则:
service firebase.storage {
match /b/app-a36e5.appspot.com/o {
match /{allPaths=**} {
allow read: if true;
allow write: if request.auth != null;
}
}
}
这样存储上的所有内容都是可读的 .
任何想法如何让它工作?谢谢 .
1 回答
这里的问题是您没有正确命名存储桶 . 存储桶初始化应该是:
我假设
process.env.FB_PROJECT_ID
只是your-bucket
部分,您需要获取完整的存储桶名称,而不仅仅是项目ID(尽管存储桶名称可能是process.env.FB_PROJECT_ID + '.appspot.com'
) .此外,抱歉没有提供与Firebase集成的存储 - GCS拥有您已经找到的高质量库(gcloud-node),我们认为这为开发人员提供了最佳故事(Firebase for Mobile,Google Cloud Platform for服务器端开发),并不想进一步浑水 .