Модульный веб-API Firebase – инициализацияApp()

Я перехожу на веб-модульный API JavaScript из пространства имен JavaScript (compat). Мой код представляет собой функцию Firebase с http-триггером, работающим на GCP, поэтому код «живет» в инфраструктуре GCP. Я думаю, что из-за этого мне не нужно указывать кучу данных для инициализации приложения и базы данных, что было бы в том случае, если бы мой код работал на ReactJS или любой другой интерфейсной платформе.

В моем старом коде я просто инициализировал приложение в файле с именем firebase-db, который подключался везде, где это было необходимо. Это также дало мне доступ к базе данных. Дескриптор базы данных больше не нужен при использовании модульного API.

// This is the old namespaced code
const admin = require("firebase-admin");

const app = admin.initializeApp();
const database = admin.database(app);
module.exports = database;

В моем новом коде этого файла нет, и я просто использую приведенный ниже код в своих файлах.

const { ref, getDatabase, get } = require("firebase/database");
...

Однако это не работает. Я получаю сообщение об ошибке, в котором четко указано, что «Приложение» необходимо инициализировать.

FirebaseError: Firebase: приложение Firebase «[DEFAULT]» не создано — сначала вызовите InitializeApp() (приложение/нет-приложение)

Мой новый файл firebase-db выглядит так; Но это не работает:

// This is the new modular code
const { initializeApp } = require("firebase-admin");
const { getDatabase } = require("firebase/database");

const app = initializeApp(); //<-- This line generates an error!
const database = getDatabase(app);

module.exports = database;

Вызов initializeApp(); генерирует ошибку:

Ошибка типа: невозможно прочитать свойство INTERNAL неопределенного значения.

Я начал изучать документацию, но не нашел хороших примеров инициализации приложения, чтобы получить дескриптор Dabase с помощью getDatabase().

https://firebase.google.com/docs/database/admin/retrieve-data#node.js_19https://firebase.google.com/docs/database/web/read-and-write#web-modular-api_5https://firebase.google.com/docs/reference/js/database.md#equalto_51c2c8b

Любая помощь очень ценится! /К

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
173
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Веб-SDK Firebase не заменяют Firebase-admin. На бэкэнде вам все равно придется использовать Firebase-admin и его обычный API. Для Firebase-admin не существует «модульного» API.

Чтобы быть более конкретным:

  • «firebase/database» предназначен для интерфейсных веб-приложений. На самом деле он не предназначен для использования на серверной стороне (за исключением, возможно, очень специфических ситуаций, которые, вероятно, к вам не относятся). Документация, содержащая как классические, так и модульные API: https://firebase.google.com/docs/database/web/start
  • «firebase-admin» по-прежнему является основным пакетом для использования с бэкэндами nodejs. Он не устарел, его API существенно не изменился, и он не предоставляет модульного API, который отражал бы то, что вы найдете в современных веб-SDK. Документация: https://firebase.google.com/docs/database/admin/start

О, нет! Я понимаю. Я был вынужден обновить свой интерфейс до модульного API, и теперь существует несогласованность в написании кода для внешнего и внутреннего интерфейса. Это БЫЛО одним из больших преимуществ использования JavaScript. Не слишком этому рад. Почему бы не использовать модульную систему и для серверной части? /К

Kermit 25.02.2024 20:33
github.com/firebase/firebase-admin-node/issues/2299
Doug Stevenson 25.02.2024 20:39

Другие вопросы по теме