【发布时间】:2018-09-23 03:53:49
【问题描述】:
我是 javascript/nodeJS 的新手。我正在尝试实现一个接收用户 ID 的 http firebase 云函数。收到后,我需要调用 firestore getDocument 函数并获取它的相应数据,使用这些数据进行操作并在 http 云函数响应中发送回客户端。
我的代码如下,我在邮递员中得到一个空响应。但是我可以在我的服务器日志中注意到,我的 firestore getDocument 中的以下语句打印了正确的数据。
console.log('Document data:', user);
但是,当我在我的 http 云函数中打印相同的数据时,它是空的。
console.log('User data:', user);
根据我的理解,即使 firestore 获取了实际数据,http cloud 功能也会在检索这些实际数据之前发送它的响应,这会导致空响应。
感谢您的洞察力。提前致谢!
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);
});
【问题讨论】:
标签: javascript node.js firebase google-cloud-firestore google-cloud-functions