3

Im Moment gibt es keinen Firebase Storage-Client von node.js (schade ...), also wende ich mich an gcloud-node mit den Parametern in der Firebase-Konsole .Firebase-Parameter mit Google Cloud Storage unter node.js verwenden

Ich versuche:

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); 
}); 

Wo:

  • FB_JSON_PATH den Pfad zu der JSON-Datei, um die Firebase Server SDK etwas zu verwenden, erzeugte

  • FB_DATABASE_URL ist wie https://app-a36e5.firebaseio.com/

  • FB_PROJECT_ID ist der Name des Projekts in Feuerbasis Googles Konsole: "app-a36e5"

Die ID des Eimers ist FB_PROJECT_ID (in der Konsole des Firebase die Speicher Registerkarte zeigt gs: //app-a36e5.appspot .com)

Wenn ich diesen Code ausführen, erhalte ich:

err null 
exists false 

aber keine weiteren Fehler.

Ich erwarte mindestens exists true.

Einige zusätzliche Informationen: Ich habe die Datenbank abfragen kann (so stelle ich mir die JSON-Datei korrekt ist), und ich habe die Lagerregeln wie folgt festgelegt:

service firebase.storage { 
    match /b/app-a36e5.appspot.com/o { 
    match /{allPaths=**} { 
     allow read: if true; 
     allow write: if request.auth != null; 
    } 
    } 
} 

Damit alles auf dem Speicher lesbar ist.

Irgendwelche Ideen, wie man es zur Arbeit bringt? Vielen Dank.

+0

Hey Pierre, hast du es geschafft, dass das funktioniert? Es wäre schön, auf diese interessante Frage eine angemessene Antwort zu geben. Vielen Dank! (Entschuldigung, ich wusste nicht, dass das nur 56 Minuten alt war - warten wir dann auf eine Antwort :)) – Pandaiolo

+0

Das heißt, es gibt ein erstes Problem in Ihrem Code, Sie müssen 'gcloud.storage' mit Ihren Zugangsdaten aufrufen:' gcloud .storage ({ projectId: 'firebase-storage-id, schlüsselDateiname:' service-konto-json-pfad ' }); '. (Ich tat das, aber ich habe immer noch einen VERBOTENEN Fehler) – Pandaiolo

Antwort

4

Das Problem hier ist, dass Sie Ihren Speicher-Bucket nicht korrekt benennen. Der Eimer Initialisierung sollte sein:

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

Ich würde davon ausgehen, dass process.env.FB_PROJECT_ID ist nur der your-bucket Teil, und Sie müssen die vollen Eimer Namen erhalten, nicht nur das Projekt-ID (auch wenn der Eimer Name process.env.FB_PROJECT_ID + '.appspot.com' sein kann) .

Es tut uns auch leid, nicht mit Firebase inkorporierten Speicher bereitzustellen - GCS verfügt über eine qualitativ hochwertige Bibliothek, die Sie bereits gefunden haben (gcloud-node), und wir fanden, dass dies die beste Geschichte für Entwickler bietet (Firebase für mobile, Google Cloud Platform für die Server-seitige Entwicklung) und wollte die Gewässer nicht weiter verschmutzen.

+2

Die Firebase-Dokumente sind einwandfrei, hatten nie irgendwelche Beschwerden. Die gcloud-Dokumente hingegen sind ziemlich verwirrend. Wie Pierre, habe ich gerade stundenlang versucht, einfach eine Datei in nodejs hochzuladen.Vielleicht sind die korrekten Werte für gcloud bei Verwendung von Google Firebase unklar. Zum Beispiel weiß ich immer noch nicht, welche URL auf die Datei verweisen soll ... ein Beispiel (GCS) sagt "https: // www.googleapis.com/bucket/xxx", andere (Firebase) sagen "https" : // firebasestorage.googleapis.com/b/bucket/o/xxx' ... ziemlich verwirrend ... (sorry ein bisschen off topic though :)) – Pandaiolo

+0

+ Pandaiolo, wenn Sie Ihre Frustrationen mit der gcloud-node docs setzen können in Frage Form, wäre es toll, Feedback zu hören: https://github.com/googlecloudplatform/gcloud-common. Um zu beginnen, habe ich ein Problem mit Ihrem Feedback, inspirierte hier: https://github.com/GoogleCloudPlatform/gcloud-common/issues/141 – Stephen

+0

Danke Mike! – Pierre