Я пытался использовать firebase-admin в моем проекте node js. ниже код моей главной страницы:
const functions = require('firebase-functions');
const express = require('express');
const ejs = require('ejs');
var firebase = require('firebase-admin');
const app = express();
// const firebaseApp = firebase.initializeApp(
// functions.config().firebase
// );
app.set('view engine', 'ejs');
app.set('views', './views');
app.use('/', require('./routes/index'));
app.use('/getPosts', require('./routes/posts'));
app.use('/tests', require('./routes/tests'));
exports.app = functions.https.onRequest(app);
exports.firebaseApp = function(){
return firebase.initializeApp(
functions.config().firebase
);
}
Код файла - ./routes/tests приведен ниже:
const functions = require('firebase-functions');
var express = require('express');
var router = express.Router();
var firebase = require('firebase-admin');
//
// const firebaseApp = firebase.initializeApp(
// functions.config().firebase
// );
const firebaseApp = require('../index.js').firebaseApp;
function getPosts(){
const ref = firebaseApp.database().ref('users');
return ref.once('value').then(snap => snap.val());
}
router.get('/', (req, res, next) => {
getPosts().then(posts => {
res.json(posts);
});
});
module.exports = router;
Проблема в том, что когда я захожу на http://localhost:5000/getPosts, он говорит TypeError: невозможно прочитать базу данных свойства undefined. В чем здесь главная проблема?
Добавление
firebase.initializeApp(
functions.config().firebase
);
на каждой странице макета, это не лучшая идея, потому что она будет инициализировать firebase несколько раз. Как мне решить эту проблему?
К. Попробую!
Это работает, но если я добавлю код const firebaseApp = require('./connect.js').firebaseApp(); function getPosts(){ const ref = firebaseApp.database().ref('users'); return ref.once('value').then(snap => snap.val()); } router.get('/', (req, res, next) => { getPosts().then(posts => { res.json(posts); }); }); в несколько файлов, это вернет ошибку.
Firebase.initializeApp используется на нескольких страницах для разных целей.
Если у вас есть проблема, отличная от указанной в вопросе, создайте еще один вопрос и объясните там новую проблему.
Ответ на [stackoverflow.com/q/51121533/10016659] также решает этот вопрос.
Этот способ инициализации приложения был удален. Обратитесь к Руководство по миграции Firebase SDK для облачных функций: бета-версия до версии 1.0. firebase.initializeApp (functions.config (). firebase); Теперь приложение должно быть инициализировано с помощью firebase.initializeApp (); Надеюсь, поможет.





Я очень удивлен, что у вас есть файл, которому требуется другой файл, который, в свою очередь, требует первого файла. Это похоже на плохой дизайн. Подумайте о том, чтобы иметь один файл, который нужен им обоим, чтобы получить то, что у них общего.