是否可以在创建Firebase云功能的同一文件中调用非云功能?

时间:2019-04-27 13:26:49

标签: javascript node.js firebase google-cloud-functions

我仍然无法确定这些功能通常是如何工作的。对于项目,我创建了一个函数,只要调用该函数的URL就会调用该函数。此后,被调用函数还使用一个实用程序函数。该函数已被多次使用,所以我只觉得在单独的函数中创建它们是明智的,尽管在部署后每当使用该函数时,都会出现此错误。

TypeError: this.isMM is not a function
    at exports.addOrder.functions.https.onRequest (/user_code/index.js:130:11)
    at cloudFunction (/user_code/node_modules/firebase-functions/lib/providers/https.js:57:9)
    at /var/tmp/worker/worker.js:783:7
    at /var/tmp/worker/worker.js:766:11
    at _combinedTickCallback (internal/process/next_tick.js:73:7)
    at process._tickDomainCallback (internal/process/next_tick.js:128:9)

我只有一个文件index.js,我在其中放置了所有函数,尽管我不确定为什么不读取上述函数isMM()。下面是相关的代码块(为简单起见,我已替换了函数的内容。

exports.addOrder = functions.https.onRequest((req, res) => {
  var newValue = req.query.my_info;
  var anotherValue = req.query.another_info;

  var my_info = this.isMM(newValue);
  if(my_info){
    var another_info = this.isMM(anotherValue);
    if(another_info){
      doThis();
    }
  }
});

isMM = (toCheck) => {
  if(toCheck === 'someString'){
    return true;
  }
  return false;
}

我希望在addOrder中使isMM可读,因为这是我需要为该项目反复执行的事情。

1 个答案:

答案 0 :(得分:2)

只需执行以下操作,就不要使用this

  var my_info = isMM(newValue);
  if(my_info){
    var another_info = isMM(anotherValue);
    if(another_info){
      doThis();
    }
  }