Возможно ли получить доступ к firebase как на стороне сервера, так и на стороне клиента в NodeJS? - PullRequest
1 голос
/ 27 апреля 2020

Я работаю с приложением, которому необходим доступ к базе данных firebase как на стороне клиента (чтобы перехватить событие on для получения недавно добавленных данных), так и на стороне сервера (чтобы добавить запись в базу данных). Я не уверен, что правильно сделал, что использование экземпляров 2 дБ необходимо как на клиенте, так и на сервере, ИЛИ создайте 1 на сервере и используйте его на клиенте, потому что на локальной стороне я получил предупреждение о том, что Firebase уже определен в глобальная область действия.

Вот так я объявляю экземпляр db на стороне сервера , это прекрасно работает:

var admin = require("firebase-admin");
var serviceAccount = require("../config/sterminal-0000-firebase-adminsdk-bvuit-ce5ee771bc.json");

admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    databaseURL: "https://sterminal-0000.firebaseio.com"
});

module.exports.admin = admin;

...

const {admin} = require('../extra/firebase');
let db = admin.database();

Так я объявляю экземпляр БД на стороне клиента :

Включить шаблон libs to pug

script(src="https://www.gstatic.com/firebasejs/7.14.2/firebase-app.js")
script(src="https://www.gstatic.com/firebasejs/7.14.2/firebase-database.js")
script(src="/javascripts/local.js" crossorigin="anonymous")

И в локальный скрипт :

var firebaseConfig = {
    apiKey: "AIzaSyCkip7lcHNNodJNhrO5n0Hog5Kvs100000",
    authDomain: "sterminal-00000.firebaseapp.com",
    databaseURL: "https://sterminal-00000.firebaseio.com",
    projectId: "sterminal-8bf73",
    storageBucket: "sterminal-00000.appspot.com",
    messagingSenderId: "961511900000",
    appId: "1:96151100000:web:f3cec40f38f7b7d4000000"
};

firebase.initializeApp(firebaseConfig);

firebase.database().ref("messages").on("child_added", function (snap) {
        console.log(snap.val().message);
}); // ----> DOES NOT WORK

Я получил предупреждение на местной стороне :

logger.ts:115 [2020-04-27T18:43:48.559Z]  @firebase/app: 
    Warning: Firebase is already defined in the global scope. Please make sure
    Firebase library is only loaded once.

1 Ответ

0 голосов
/ 27 апреля 2020

Да, вы можете получить доступ к базе данных Firebase Realtime как со стороны клиента Node.js, так и со стороны сервера Node.js. Но SDK разделены, и вы не можете включить их в один проект. Похоже, именно это приводит к той ошибке, которая у вас сейчас есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...