невозможно создать папки в хранилище Firebase - Firebase Admin - PullRequest
0 голосов
/ 23 января 2020

в моем случае у меня есть список URL-адресов, и я хочу загрузить каждый файл из этих URL-адресов и упорядочить его в хранилище firebase, моя проблема в том, что я не могу создать папки в хранилище firebase через nodejs javascript / typescript.

хорошо хранилище firebase предлагает ref () и дочерний метод для загрузки файлов в дочернюю папку (см. this ), но firebase предлагает только этот метод для клиентских библиотек firebase, это не так что мы не можем использовать клиентскую библиотеку в nodejs, но некоторые пространства имен были скрыты при подключении клиентской библиотеки firebase в nodejs, и хранилище является одним из них (см. this ).

Я рад, что они рассмотрели интерфейс и бэкэнд по отдельности, по этой самой причине, что у фронта и бэкенда совершенно разные сценарии для безопасности и вариантов использования, поэтому то, что они действительно написали для использования в nodejs, - это firebase admin, и я не вижу ref и дочерний метод в официальной документации, которую они сказали, это это нет никакого другого способа присвоить имя файлу, который я загружаю, ни какого-либо метода для создания папок в go дочерних каталогах, когда я загружаю файл со своего компьютера, он сохраняется в корзине root с тем же именем, что и имя файла был на моем компьютере, хотя я могу создавать папки из консоли Firebase вручную, но это не будет соответствовать моим требованиям, наверняка должен быть какой-либо способ создания папок программно.

Я также пытался использовать библиотеку облачного хранилища Google const {Storage} = require('@google-cloud/storage'); , но оказалось, что администратор Firebase и облачная библиотека Gogole используют один и тот же документ и имеют одинаковый интерфейс, по крайней мере, в части загружаемого файла.

Ну, я потратил свой день (ну и ночь, так как сейчас 4:46 утра), пробуя разные библиотеки и копаясь в их документах, которые я также нашел немного неорганизованными и отсутствующими примерами кода.

любой Буду признателен за помощь, мой фрагмент кода до сих пор следующий из их do c и загрузки файла правильно:

import "firebase/firestore"

admin.initializeApp({
    credential: admin.credential.cert("./../path-to-service account-cert.json"),
    databaseURL: 'gs://bilal-assistant-xxxxx.appspot.com'
});
const quran_bucket = admin.storage().bucket("quran-bucket");

quran_bucket.upload("./my_computer_path/fatiha.mp3", {
    gzip: true,
    metadata: {
        cacheControl: 'public, max-age=31536000',
    }
}).then(uploadResponse => {
    console.log(` uploaded complete.`);
}).catch((reason: any) => {
    console.log("reason: ", reason);
})

Все, что я хотел, это сохранить аудиофайл в папке, а не в корзине root

1 Ответ

2 голосов
/ 23 января 2020

Согласно документации API, upload () принимает объект UploadOptions в качестве второго параметра. Вы захотите использовать задокументированное свойство destination этого объекта, чтобы указать имя файла в хранилище:

quran_bucket.upload("./my_computer_path/fatiha.mp3", {
    destination: 'audio/juz30/fatiha.mp3',
    gzip: true,
    metadata: {
        cacheControl: 'public, max-age=31536000',
    }
})

Возможно, вы не хотите беспокоить gzip mp3, так как он уже сжат и не будет сжимать дальше.

...