Déclassé : voir la réponse acceptée.
Quelques détails à noter :
- Firebase Storage n'est plus utilisé avec Node.js, donc toute la documentation est inutile pour Node.js. A la place, utilisez
google-cloud
. Les références et les guides pour Firebase et Google Cloud ne reflètent pas cela à ce jour.
- Contrairement à Firebase, google-cloud coûte cher, même pour les petits projets.
- Dans mon cas, j'utilise le
firebase-admin
SDK pour que je n'aie pas à m'occuper de l'authentification des utilisateurs pour le moment.
Objectif
Pour créer un projet Node.js unique qui utilise Firebase et Google Cloud. Pourquoi ? Firebase dispose d'une base de données utile, entre autres fonctionnalités, et Google Cloud permet de stocker et de récupérer des fichiers dans le nuage.
Directions
Étape 1 : Création du projet
Créer Firebase y Google Cloud (stockage) projets.
Étape 2 : Installer les paquets
Utilisation de npm , installer firebase-admin
y google-cloud
en Node.js
projet.
Note 1 : J'ai utilisé le SDK d'administration, donc après avoir créé le projet Firebase, vous aurez besoin d'aller à :
- Paramètres (l'engrenage) > Paramètres du projet > Comptes de service > Firebase Admin SDK
- Alors vous : Sélectionnez
Node.js
> [Copier/coller le code généré dans votre projet] > [cliquez sur "Générer une nouvelle clé privée"] > [téléchargez le fichier généré json
à l'emplacement souhaité] > [remplacer "path/to...AccountKey.json"
avec le chemin vers la clé que vous venez de généré].
Note 2 : la clé générée peut être réutilisée dans les identifiants firebase ou google-cloud.
Étape 3 : Configuration de Firebase
Une fois que votre projet est créé, importez le firebase-admin
sdk :
Le code devrait ressembler à ceci, mais rempli avec vos informations :
var admin = require("firebase-admin");
admin.initializeApp({
credential: admin.credential.cert("/path/to/generated/json/here.json"),
databaseURL: "database-url-from-firebase"
});
Pour trouver l'URL de la base de données, allez dans "Storage" dans Firebase, et notez l'URL qui commence par "database". gs:
et le copier/coller dans le champ de valeur de databaseURL.
Ensuite, obtenez une référence à la base de données que vous pouvez utiliser :
var db = admin.database();
var ref = db.ref("/");
console.log('DB ref: ' + ref); //just to debug, if undefined, there's a problem.
Pour en savoir plus sur la lecture/écriture dans la base de données, suivez les instructions suivantes Documentation propre à Firebase .
Étape 4 : Configuration de la facturation Google-Cloud
Après avoir créé un projet sur Google Cloud, ajoutez les informations de facturation ; les buckets ne peuvent pas être utilisés sans les informations de facturation.
Étape 5 : Configuration du stockage Google-Cloud
- En faisant défiler le menu (les 3 barres horizontales), cliquez sur "Stockage", puis "Activer la facturation". Oui, vous avez ajouté les informations de facturation, maintenant vous devez les activer pour les seaux de ce projet.
- Vous devrait voir qu'un bucket devrait déjà exister dans votre projet Firebase.
- Cliquez à nouveau sur le menu (icône à 3 barres), puis sur >. IAM & Admin > Ajustes
- Dans les paramètres, vous verrez "Project ID" qui devrait ressembler à "projectName-00000" ou "projectName-Some#", copier l'ID du projet
Étape 6 : Google Cloud dans Node.js
Dans votre 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'
});
Maintenant, vous pouvez envoyer un fichier à votre stockage par :
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);
}
});
Étape 7 : Vérifier
Si le fichier est visible dans Firebase Storage et Google Cloud Storage, vous avez terminé !
0 votes
Duplicata ? stackoverflow.com/questions/37369466/
2 votes
@SergChernata Non, c'est une erreur totalement différente. "
Firebase is not a function
. Leur erreur était qu'ils n'ont pas initialisé Firebase correctement, alors que je l'ai fait, et capable d'utiliser la base de données Firebase et d'autres fonctionnalités en conséquence. Le stockage Firebase est le problème.0 votes
Que voyez-vous en inspectant le
firebase.storage
objet ? Essayez de faire console.log(JSON.stringify(firebase.storage)). Est-il indéfini ?2 votes
Oui, c'est indéfini ; malgré le fait que le JSON pointe vers la bonne URL, ce que je viens de vérifier deux fois.