【问题标题】:Hosting multiple environment in single project in firebase在firebase的单个项目中托管多个环境
【发布时间】:2019-12-28 10:21:18
【问题描述】:

我有一个使用谷歌云托管的 firebase 和 API 项目。 我想了解如何托管我的云功能的多个实例,例如一个带有测试 url,另一个是实时的,一个可能是开发的

我尝试通过创建站点进行部署,但它似乎覆盖并保留了最后一个。

我想避免创建多个项目,因为它需要维护多个数据库。

【问题讨论】:

  • 您只想让您的 Firebase 云函数有多个端点来调用它们?
  • 你真的应该使用多个项目,每个环境一个。这始终是保持环境隔离的推荐解决方案。其他任何事情都会变得更加困难和成问题。

标签: firebase google-cloud-functions


【解决方案1】:

您可以使用 express 来完成此操作。看看这个 gitrepo 上的 index.js 文件https://github.com/JoeBeer/tandemPartner/tree/master/functions

在那里你可以看到如何实现这样的端点。

编辑: 假设您想要使用https://yourwebsite.cloudfunctions.net/usershttps://yourwebsite.cloudfunctions.net/chatrooms 调用一个端点。

这可能如下所示:

index.js

'use strict';
const admin = require('firebase-admin');
const functions = require('firebase-functions');
admin.initializeApp(functions.config().firebase);

const cors = require('cors')({ origin: true });
const express = require('express');

const users = express();
users.use(cors);
let usersEndpoint = require('./usersEndpoint');

const chatrooms = express();
chatrooms.use(cors);
let chatroomsEndpoint = require('./chatroomsEndpoint')

users.post('/', usersEndpoint.createUser); // Create new user
users.put('/:userId', usersEndpoint.updateUser); // Update user
users.delete('/:userId', usersEndpoint.deleteUser); // Delete user
exports.users = functions.https.onRequest(users); // Enables function 'users' @ Cloud Functions

chatrooms.post('/', chatroomsEndpoint.createChatroom); // Create new chatroom
chatrooms.put('/:chatroomId', chatroomsEndpoint.updateChatroom) // Update chatroom
chatrooms.delete('/:chatroomId', chatroomsEndpoint.deleteChatroom) // Delete chatroom
exports.chatrooms = functions.https.onRequest(chatrooms); // Enables function 'chatrooms' @ Cloud Functions

那么你必须提供 usersEndpoint.js 和 chatroomsEndpoint.js。

usersEndpoint.js

const admin = require('firebase-admin');
const db = admin.firestore();
const usersCollection = db.collection('users');

// Creates an user 
exports.createUser = function (req, res) {
    // implement functionality...
};

// Updates an existing user 
exports.updateUser = function (req, res) {
    // implement functionality...
};
...

【讨论】:

    【解决方案2】:

    这篇文章 [1] 回答了这个问题。

    最佳实践方式:“为每个环境使用专用项目是所有 Firebase 产品的相同推荐做法。”

    [1]Firebase Functions version of "Deploy to multiple environments"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-25
      • 2017-09-20
      • 1970-01-01
      • 2023-01-17
      • 2021-10-17
      • 2021-07-03
      相关资源
      最近更新 更多