У меня проблема с использованием промежуточного программного обеспечения Express с функциями Firebase. В этом примере a Функция подключается к экземпляру app () примерно так:

app.get('*', (req, res) => {
  res.send(`Hello ${req.user.name}`);
});

exports.authorizedHello = functions.https.onRequest(app);

Как мне использовать несколько функций, используя промежуточное программное обеспечение Express?

Это один из способов, которые я попытался решить, но вызов конечных точек возвращает 404:

app.get('/authorizedHello', (request, response) => {
    response.send(`Hello ${request.user.name}`);
})

app.get('/authorizedBye', (request, response) => {
    response.send(`Bye ${request.user.name}`);
})

exports.authorizedHello = functions.https.onRequest(app);
exports.authorizedBye = functions.https.onRequest(app);

Я уверен, что просто делаю это неправильно. Не могли бы вы указать мне правильное направление?

1
Andrey Pokrovskiy 23 Мар 2017 в 20:40

2 ответа

Лучший ответ

Учтите, что базовый путь облачной функции использует ваше имя экспорта, поэтому в этом случае ваши действительные URL будут:

https://us-central1-<YOURAPP>.cloudfunctions.net/authorizedHello/authorizedHello
https://us-central1-<YOURAPP>.cloudfunctions.net/authorizedHello/authorizedBye
https://us-central1-<YOURAPP>.cloudfunctions.net/authorizedBye/authorizedHello
https://us-central1-<YOURAPP>.cloudfunctions.net/authorizedBye/authorizedBye

Вот почему в примере используется get('*', ...). Вы должны увидеть свои URL-адреса после выполнения команды deploy.

У вас есть четыре URL, потому что вы экспортировали одно и то же приложение Express дважды.

3
James Daniels 23 Мар 2017 в 18:30

Спасибо за ваш великий вопрос. Ваш вопрос, дайте мне подсказку по использованию движка шаблонов. Возможно, я не в теме вашего вопроса. НО, я просто хочу поделиться, если кто-то хочет использовать шаблонизатор, как Pug. Посмотрите мои примеры кодов здесь.

const functions = require('firebase-functions');
const express = require("express");
const app = express();




app.set("views",__dirname+"/tmp");
app.set("view engine","pug");
app.engine('pug', require('pug').__express);
app.get("/",p3p(p3p.recommended),function(req,res){
   res.render("index");
});
app.get("/login",p3p(p3p.recommended),function(req,res){
   res.render("login");
});
exports.main = functions.https.onRequest(app);

И тогда вы можете получить доступ к этой ссылке, как это. https: // us-central1- [YOURAPP] .cloudfunctions.net / main / https: // us-central1- [YOURAPP] .cloudfunctions.net / main / Войти

Извините, что беспокою ваш вопрос. Но мне пришлось найти свой вопрос в Google, например, используя «Как использовать шаблонизатор для облачных функций Google», я так и не получил правильный ответ.

Я просто счастлив из-за ваших примеров кодов в вашем вопросе. Это вдохновляет меня на некоторые улучшения. Спасибо . Извините за мой плохой английский :)

1
Reza 17 Авг 2017 в 22:16