奇怪的是什么错误。
我正在使用Firebase云函数中的onCall
方法,但是当我从应用程序中读取它时,它会返回null
值。我正在尝试返回一些测试数据,但它似乎没有用。我是错误地返回了数据吗?
index.js
exports.handleMassFollowAnalytics = functions.https.onCall((data, context) => {
const brandArray = data.brandArray;
const followed = data.followed;
let done = 0;
for (var i = 0; i < brandArray.length; i++) {
let brand = brandArray[i];
admin.database()
.ref(`brands/${brand}/followers`)
.transaction(function(post) {
if (post !== null) {
post--;
}
return post;
},
function(error, committed, snapshot) {
done++;
if (done === brandArray.length) {
// returning result.
return {
data: "testabc",
};
}
}
);
}
});
app.js
const handleMassFollowAnalytics = firebase
.functions()
.httpsCallable("handleMassFollowAnalytics");
handleMassFollowAnalytics({
brandArray: array,
followed: true,
}).then((result) => {
console.log("result: ", result) // returns null everytime
});
答案 0 :(得分:1)
您的函数需要返回一个承诺,该承诺将与数据一起解析以发送给客户端。现在,您的函数什么也不返回。事务回调中的return语句不是从主函数返回。
此外,代码还忽略了您正在执行的交易所返回的承诺。从该函数返回的最终承诺必须在所有其他承诺都解决之后才能解决。
答案 1 :(得分:0)
因此,我使用了道格的信息,并得出以下答案,以供日后参考。
这似乎对我来说正确了。
index.js
Example: