Firebase Cloud功能不发送响应



这是我的http云函数代码,它读取一些文档,然后发送响应

res.set('Access-Control-Allow-Origin', '*');
var orderId;
var result = "";
var userId;
var promoCode;
var promoRef;
var userDocRef;
var promoCodeDoc;
//userId = req.body.userId;
//orderId = req.body.orderId;
promoCode = req.body.promoCode;
//userDocRef = db.collection("Users").doc()
promoRef = db.collection("PromoCodes").doc(promoCode);

var transaction = db.runTransaction(t => {
return t.get(promoRef)
.then(promoCodeDoc => {
if(promoCodeDoc.exists){
result = "OK";
res.json(result);
}else{
result = "Invalid Promocode!";
res.json(result);
}
//t.update(cityRef, {population: newPopulation});
return true;
});
}).then(result => {
console.log('Transaction success!');
return true;
}).catch(err => {
console.log('Transaction failure:', err);
});
return Promise.all(transaction());

但这并没有发送响应,因为函数结束了,但Firestore事务仍在后台运行。有解决我问题的办法吗?

Promise.all()需要一个promise数组作为其参数,但您没有给它一个数组参数。其次,transaction变量是一个承诺,而不是一个函数。你不能把()称为承诺。

所以我认为正确的代码应该是return Promise.all([transaction])。话虽如此,你只有一个承诺,所以你不需要Promise.all,只需要return transaction

但不确定这是否能解决你所有的问题。如果您登录到firebase控制台,导航到函数部分,会有一个"日志"选项卡,允许您查看函数执行的调试输出。它可能会帮助你找出所有的问题。我想已经记录了控制台错误,指出transaction()不是一个函数。

相关内容

  • 没有找到相关文章

最新更新