Google Cloud Function不会在res.send()上终止,但会继续执行

时间:2017-11-04 19:48:51

标签: firebase google-cloud-functions

我在Firebase上编写了一些GCF。项目结构:我得到了index.js,它声明了所有的功能。每个函数都在单独的.js文件中。我有一些实用功能,例如sendSuccess或sendFailure在我编码的地方

function _respondSuccess(res, status, data, httpCode) {
 var response = {
   'status': status,
   'successFlag' : true,
   'data' : data
 };
 res.status(httpCode).send(response);
}

function _respondFailure(res, status, data, httpCode) {
 var response = {
   'status': status,
   'successFlag' : false,
   'data' : data
 };
 res.status(httpCode).send(response);
}

我在个人GCF功能成功或失败时调用此功能。但是如果发生故障,例如条件-if-其中一个参数为null,我调用_respondFailure内部函数,GCF中的代码仍然继续下一个代码语句。我在控制台日志中出现GCF错误 - 未处理的拒绝 - 错误:发送后无法设置标头。     在ServerResponse.OutgoingMessage.setHeader(_http_outgoing.js:357:11)     在ServerResponse.header(/var/tmp/worker/node_modules/express/lib/response.js:700:10)     at _respondFailure(/user_code/banks/getBanks.js:77:10)     失败了(/user_code/banks/getBanks.js:103:2)     在/user_code/banks/getBanks.js:228:18     at process._tickDomainCallback(internal / process / next_tick.js:135:7)

有任何帮助来纠正它吗?或者我必须回到Firebase团队寻求支持?

由于

9:29:57.712 AM

警告 getBanksFunction 错误:发送后无法设置标头。 at ServerResponse.OutgoingMessage.setHeader(_http_outgoing.js:357:11)at ServerResponse.header(/var/tmp/worker/node_modules/express/lib/response.js:700:10)at_respondFailure(/ user_code / banks / getBanks) .js:77:10)失败(/user_code/banks/getBanks.js:103:2)atuser_code/banks/getBanks.js:228:18 at process._tickDomainCallback(internal / process / next_tick.js:135 :7) 9:29:57.711 AM 警告 getBanksFunction 未处理的拒绝 9:29:55.110 AM 信息
getBanksFunction 响应值 - 未定义 9:29:55.110 AM 信息
getBanksFunction 错误值-true 9:29:46.0​​14 AM 信息
getBanksFunction 检查索引是否存在(banks_index_v1) 9:29:45.923 AM outlined_flag
getBanksFunction 函数执行花了14毫秒,完成状态代码:401 9:29:45.923 AM 信息
getBanksFunction sizeVal = 10,page = undefined,fromVal = 0 9:29:45.921 AM 信息
getBanksFunction 错误:401错误:在ES中创建索引所需的req.query.routingUid - > undefined 9:29:45.921 AM 信息
getBanksFunction req.query.size = undefined 9:29:45.921 AM 信息
getBanksFunction req.query.page = undefined 9:29:45.921 AM 信息
getBanksFunction req.query.uid = undefined

在index.js中调用的函数

exports.getBanksFunction = functions.https.onRequest((req, res) => {
cors(req, res, () => {
    getBanksFunction.handler(req, res, database, esClient);
});
});

从GCF功能逻辑调用

console.log('Inside serer.post(getbanks)');
console.log('req.query.uid = ' + req.query.uid);
console.log('req.query.page = ' + req.query.page);
console.log('req.query.size = ' + req.query.size);
var routingUid = req.query.uid;
var page = req.query.page;
var sizeVal = req.query.size;
var fromVal = 0;

 if(routingUid === null || routingUid === undefined) {
     resMsg = "Error: req.query.routingUid required to create Index in ES ->" + routingUid;
    helper.failure(res,resMsg,401);
  }
 if(sizeVal == null || sizeVal === undefined)
   sizeVal = 10;
 if(page === null || page === undefined)
   fromVal = 0;
 else
   fromVal  = page * Number(sizeVal);

 console.log('sizeVal = '+sizeVal+' , page ='+page+" , fromVal = "+fromVal);

0 个答案:

没有答案