Чтение текстовых файлов из хранилища Firebase в Node.js: методы и примеры

Чтобы прочитать текстовый файл из Firebase Storage в приложении Node.js, вы можете использовать Firebase Admin SDK вместе с библиотекой @google-cloud/storage. Вот несколько методов, которые вы можете использовать, а также примеры кода:

Метод 1. Использование метода getSignedUrl.
Этот метод генерирует подписанный URL-адрес для файла в хранилище Firebase, что позволяет загрузить файл напрямую.

const admin = require('firebase-admin');
const { Storage } = require('@google-cloud/storage');
admin.initializeApp({
  // Initialize Firebase Admin SDK
  // ...
});
const storage = new Storage();
async function readTextFileFromStorage(bucketName, fileName) {
  const bucket = storage.bucket(bucketName);
  const file = bucket.file(fileName);
  const [url] = await file.getSignedUrl({
    action: 'read',
    expires: '03-01-2500', // Expiration date for the signed URL
  });
  // Now you can use the URL to download the file
  // ...
  return url;
}
// Usage
const bucketName = 'your-bucket-name';
const fileName = 'path/to/your/file.txt';
readTextFileFromStorage(bucketName, fileName)
  .then(url => {
    console.log('File URL:', url);
  })
  .catch(error => {
    console.error('Error:', error);
  });

Метод 2. Загрузка файла с помощью метода download
Этот метод загружает файл в локальное место на вашем сервере.

const admin = require('firebase-admin');
const { Storage } = require('@google-cloud/storage');
const fs = require('fs');
admin.initializeApp({
  // Initialize Firebase Admin SDK
  // ...
});
const storage = new Storage();
async function readTextFileFromStorage(bucketName, fileName, destPath) {
  const bucket = storage.bucket(bucketName);
  const file = bucket.file(fileName);
  await file.download({ destination: destPath });
  console.log('File downloaded successfully');
}
// Usage
const bucketName = 'your-bucket-name';
const fileName = 'path/to/your/file.txt';
const destPath = '/path/to/destination/file.txt';
readTextFileFromStorage(bucketName, fileName, destPath)
  .catch(error => {
    console.error('Error:', error);
  });

Метод 3: потоковая передача содержимого файла.
Этот метод позволяет осуществлять потоковую передачу содержимого файла без загрузки всего файла.

const admin = require('firebase-admin');
const { Storage } = require('@google-cloud/storage');
admin.initializeApp({
  // Initialize Firebase Admin SDK
  // ...
});
const storage = new Storage();
async function readTextFileFromStorage(bucketName, fileName) {
  const bucket = storage.bucket(bucketName);
  const file = bucket.file(fileName);
  const readStream = file.createReadStream();
  readStream.on('data', chunk => {
    // Handle each chunk of data
    console.log('Received a chunk of data:', chunk.toString());
  });
  readStream.on('end', () => {
    // File streaming finished
    console.log('Finished streaming the file');
  });
  readStream.on('error', error => {
    // Handle errors
    console.error('Error while streaming the file:', error);
  });
}
// Usage
const bucketName = 'your-bucket-name';
const fileName = 'path/to/your/file.txt';
readTextFileFromStorage(bucketName, fileName)
  .catch(error => {
    console.error('Error:', error);
  });