Я новичок в javascript / nodeJS.Я пытаюсь реализовать облачную функцию http firebase, которая получает userID в своем теле.Как только он получен, мне нужно вызвать функцию getDocument из firestore и получить соответствующие данные, манипулировать этими данными и отправить обратно клиенту в ответе функции облака http.
Мой код выглядит следующим образом, я получаю пустой ответ в Почтальоне.Однако я мог заметить в журналах своего сервера следующее заявление в моем firestore getDocument печатает правильные данные.
console.log('Document data:', user);
Однако, когда я печатаю те же данные в моей облачной функции http, она пуста.
console.log('User data:', user);
Насколько я понимаю, хотя firestore получает реальные данные, функция облака http отправляетэто ответ перед извлечением этих фактических данных, которые приводят к пустому ответу.
Оцените вашу проницательность.Заранее спасибо!
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
let db = admin.firestore();
var getRequestedUserDetails = function (userId, db) {
var user;
var cityRef = db.collection('users').doc(userId);
var getDoc = cityRef.get()
.then(doc => {
if (!doc.exists) {
console.log('No such document!');
return user;
} else {
user = doc.data();
console.log('Document data:', user);
return user;
}
})
.catch(err => {
console.log('Error getting document', err);
throw new Error('Error getting document', err);
});
return user;
}
exports.helloWorld = functions.https.onRequest((request, response) => {
if (request.method !== "POST") {
response.status(400).send('Invalid HTTP Request');
return;
}
userId = request.body.userId;
var user = getRequestedUserDetails(userId, db);
console.log('User data:', user);
response.send(user);
});