инициализировать приложение Firebase в нескольких файлах с помощью nodejs

1

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

Ниже приведена структура файловой системы:

/functions
 |-keys
 |-methods
 |  |-email.js
 |  |-logger.js
 |-node_modules
 |-index.js
 |-package.json
 |-package-lock.json

В моем index.js, я инициализирую 2 проекта, где 1 для производства, а другой - для OTE.:

const functions = require('firebase-functions');
var firebaseAdmin = require('firebase-admin');

var productionServiceAccount = require('./keys/production-key.json');
var oteServiceAccount = require("./keys/ote-key.json");

var prodServer = firebaseAdmin.initializeApp({
    credential: firebaseAdmin.credential.cert(productionServiceAccount),
    databaseURL: 'https://production-panel.firebaseio.com'
}, "prod");
var oteServer = firebaseAdmin.initializeApp({
    credential: firebaseAdmin.credential.cert(oteServiceAccount),
    databaseURL: "https://ote-panel.firebaseio.com"
}, "ote");

console.log("prodServer: ", prodServer.name, "oteServer: ", oteServer.name)

var mailer = require('./methods/email.js') //import code from method folder
var logger = require('./methods/logger.js') //import code from method folder

Ниже описано, как я обрабатываю запрос, используете ли проект prod или OTE:

let admin = req.headers.env == 'prod' ? prodServer : oteServer

Теперь проблема в том, что мой ./methods/logger.js хочет читать/записывать журнал в ./methods/logger.js данных, но я не знаю, как это сделать/что делать.

Below is the 'logger.js' code:
var exports = {}

exports.log = function(item, ref, env) {
    let admin = env == 'prod' ? prodServer : oteServer //<--problem here

    return admin.database().ref(ref).push(item)
}

module.exports = exports

Должен ли я снова инициализировать проект index.js или импортировать его из index.js?

-If снова инициализирует проект firebase, он скажет, что используется "имя" проекта.

-If импортировать его из index.js, тогда я должен экспортировать его из index.js, который, когда я его развертываю в Firebase Function, станет методом onCall.?

-If Я перемещаю инициализацию в другой файл (./method/initFirebase.js) и импортирую его в index.js когда я его развертываю в Firebase Function, автоматически ли инициализирует приложение firebase?

Пожалуйста, порекомендуйте. Спасибо.

Теги:
firebase
google-cloud-functions

1 ответ

1

Вы можете создать один дополнительный файл, как вы сказали initFirebase.js и поместите там код инициализации и экспорта.

const prodServer = firebaseAdmin.initializeApp({
    credential: firebaseAdmin.credential.cert(productionServiceAccount),
    databaseURL: 'https://production-panel.firebaseio.com',
}, 'prod');
const oteServer = firebaseAdmin.initializeApp({
    credential: firebaseAdmin.credential.cert(oteServiceAccount),
    databaseURL: 'https://ote-panel.firebaseio.com',
}, 'ote');
module.exports = {
    firebaseApp: env === 'prod' ? prodServer : oteServer,
};

И из всего другого файла import firebase app

const firebaseApp = require('../YOUR_initFirebase.js')

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

  • 0
    будет ли initFirebase.js успешно экспортироваться, если env не объявлен в файле? Мой env основном приходит вместе с HTTP-запросом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню