Javascript firebase云函数oncall返回null
想知道什么是奇怪的错误 我正在使用firebase云函数中的Javascript firebase云函数oncall返回null,javascript,firebase,google-cloud-functions,Javascript,Firebase,Google Cloud Functions,想知道什么是奇怪的错误 我正在使用firebase云函数中的onCall方法,但当我从应用程序中读取它时,它返回null值。我试图返回一些测试数据,但它似乎不起作用。我是否返回了错误的数据 index.js exports.handleMassFollowAnalytics = functions.https.onCall((data, context) => { const brandArray = data.brandArray; const foll
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",
};
}
}
);
}
});
const handleMassFollowAnalytics = firebase
.functions()
.httpsCallable("handleMassFollowAnalytics");
handleMassFollowAnalytics({
brandArray: array,
followed: true,
}).then((result) => {
console.log("result: ", result) // returns null everytime
});
exports.handleMassFollowAnalytics = functions.https.onCall((data, context) => {
const brandArray = data.brandArray;
const followed = data.followed;
var promises = [];
for (var i = 0; i < brandArray.length; i++) {
let brand = brandArray[i];
promises.push(admin.database()
.ref(`brands/${brand}/followers`)
.transaction(function(post) {
if (post !== null) {
post--;
}
return post;
});
);
}
return Promise.all(promisess).then((result)=>{
return {
data: "testabc",
}
})
});
您的函数需要返回一个承诺,该承诺与要发送给客户端的数据进行解析。现在,函数不返回任何内容。事务回调中的return语句不是从主函数返回的
此外,代码会忽略您正在执行的事务返回的承诺。函数返回的最终承诺必须在所有其他承诺解决后才能解决。因此,我使用了Doug的信息,得出了以下答案,以供将来参考 这对我来说似乎是正确的
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",
};
}
}
);
}
});
const handleMassFollowAnalytics = firebase
.functions()
.httpsCallable("handleMassFollowAnalytics");
handleMassFollowAnalytics({
brandArray: array,
followed: true,
}).then((result) => {
console.log("result: ", result) // returns null everytime
});
exports.handleMassFollowAnalytics = functions.https.onCall((data, context) => {
const brandArray = data.brandArray;
const followed = data.followed;
var promises = [];
for (var i = 0; i < brandArray.length; i++) {
let brand = brandArray[i];
promises.push(admin.database()
.ref(`brands/${brand}/followers`)
.transaction(function(post) {
if (post !== null) {
post--;
}
return post;
});
);
}
return Promise.all(promisess).then((result)=>{
return {
data: "testabc",
}
})
});
exports.handleMassFollowAnalytics=functions.https.onCall((数据、上下文)=>{
const brandArray=data.brandArray;
const followed=data.followed;
var承诺=[];
对于(var i=0;i{
返回{
数据:“testabc”,
}
})
});
嘿,道格,谢谢你的回复。您认为有什么资源可以指导我这样做吗?对于非现场参考或教程的请求与堆栈溢出无关。通过网络搜索,你应该能够找到很多关于JavaScript编程的信息。似乎你已经为这个问题找到了答案。谢谢你给我指明了正确的方向。