Для этого вы можете использовать библиотеку node.js request-prom .
Вы могли бы сделать что-то вроде этого, например:
.....
var rp = require('request-promise');
.....
exports.yourCloudFunction = functions.database.ref('/parent/{childId}')
.onCreate((snapshot, context) => {
// Grab the current value of what was written to the Realtime Database.
const createdData = snapshot.val();
var options = {
url: 'https://.......',
method: 'POST',
body: ....
json: true // Automatically stringifies the body to JSON
};
return rp(options);
});
Если вы хотите передать параметры в вызываемую службу / конечную точку HTTP (S), вы можете сделать это через тело запроса, например:
.....
const createdData = snapshot.val();
var options = {
url: 'https://.......',
method: 'POST',
body: {
some: createdData.someFieldName
},
json: true // Automatically stringifies the body to JSON
};
.....
или через несколько пар ключ-значение строки запроса, например:
.....
const createdData = snapshot.val();
const queryStringObject = {
some: createdData.someFieldName,
another: createdData.anotherFieldName
};
var options = {
url: 'https://.......',
method: 'POST',
qs: queryStringObject
};
.....
ВАЖНО:
Обратите внимание, что если вы планируете звонить в службу, не принадлежащую Google (например, упомянутый вами "сторонний сервер"), вам необходимо использовать тарифный план "Flame" или "Blaze".
На самом деле, бесплатный план «Spark» «разрешает исходящие сетевые запросы только в сервисы, принадлежащие Google». См. https://firebase.google.com/pricing/ (наведите курсор мыши на знак вопроса, расположенный после заголовка «Облачные функции»)
ОБНОВЛЕНИЕ ПО СЛЕДУЮЩЕМУ КОММЕНТАРИЮ:
Если вы хотите инициировать вызов на сторонний сервер, а затем заполнить базу данных Firebase Realtime данными, полученными с этого сервера, вы можете сделать следующее. Я взял пример вызова API из документации запроса-обещания: https://github.com/request/request-promise#get-something-from-a-json-rest-api.
Затем вы будете регулярно вызывать эту облачную функцию с помощью онлайн-задания CRON, например https://www.easycron.com/.
exports.saveCallToAPI = functions.https.onRequest((req, res) => {
var options = {
uri: 'https://api.github.com/user/repos',
headers: {
'User-Agent': 'Request-Promise'
},
json: true // Automatically parses the JSON string in the response
};
rp(options)
.then(repos => {
console.log('User has %d repos', repos.length);
const dbRef = admin.database().ref('userName'); //For example we write to a userName node
var newItemRef = dbRef.push();
return newItemRef.set({
nbrOfRepos: repos.length
});
})
.then(ref => {
response.send('Success');
})
.catch(error => {
response.status(500).send(error);
});
});