В целом ваш подход будет работать, и вы можете определять дополнительные функции внутри вашего MyGCF
обработчика, так же, как вы определили getDay()
. Однако одна проблема с текущим кодом заключается в том, что вы забыли «написать ответ» на запрос, обрабатываемый MyGCF
.
Вы можете написать ответ на запрос, вызвав send()
на втором res
аргументе вашего MyGCF
обработчика запроса. Простой пример будет:
/* Sends a response of "hello" for the request */
res.send("hello");
Что касается вашего кода, вы можете использовать res.send()
в вашем .then()
обратном вызове, чтобы отправить ответ клиенту после завершения getDay()
(см. Код ниже). Также обратите внимание на включение в .catch()
предложения и обратного вызова для случая ошибки (с состоянием ошибки), чтобы гарантировать, что клиент получит соответствующий ответ об ошибке, если вызов getDay()
завершится неудачно:
export const MyGCF = functions.https.onRequest((req, res) => {
const request = require('request');
const url = 'http://worldclockapi.com/api/json/pst/now';
function getDay() {
return new Promise((resolve, reject) => {
request(url, {
json: true
}, (err: any, r: any, body: any) => {
if (err) {
reject(err);
} else {
resolve(body.dayOfTheWeek);
}
});
});
}
getDay().then((dayOfTheWeek) => {
/* Send a response once the getDay() request complete */
res.send(dayOfTheWeek);
})
.catch(err => {
/* Don't forget the error case */
res.status(500).send(err);
});
});