繁体   English   中英

在node.js下将Firebase参数与Google云端存储配合使用

[英]Using Firebase parameters with Google Cloud Storage under node.js

目前没有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;
    }
  }
}

这样存储上的所有内容都是可读的。

任何想法如何让它工作? 谢谢。

这里的问题是您没有正确命名存储桶。 存储桶初始化应该是:

var bucket = gcs.bucket('app-a36e5.appspot.com'); // full name of the bucket includes the .appspot.com

我假设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服务器端开发),并不想进一步浑水。

暂无
暂无

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

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