Firebase云功能发出POST请求

时间:2017-05-11 14:13:26

标签: javascript jquery firebase firebase-realtime-database google-cloud-functions

我正在使用firebase数据库,我想要一个云功能(触发器)与REST node.js webservice进行通信。

已经创建了触发器,但现在我希望云功能可以调用托管计算机中的外部Web服务。

我导入了jQuery。但它说 $ .post不是函数。我认为这将是因为苗条版本以某种方式安装(不是这种情况)。然后我尝试使用XMLHttpRequest直接在JavaScript中完成,该函数也说

  

ReferenceError:未定义XMLHttpRequest       在/user_code/index.js:91:19       at process._tickDomainCallback(internal / process / next_tick.js:129:7)

您是否知道如何在firebase云功能上发出 POST 请求?

1 个答案:

答案 0 :(得分:0)

Firebase Cloud Functions是一个Node.js环境。但是jQuery是一个客户端的JavaScript库。有一些服务器端jQuery版本(Cheerio,nodeQuery),请参见此处:Can I use jQuery with Node.js?

但我愿意。 。 。

尝试使用节点模块xmlhttprequest。它允许您以客户端JavaScript的方式编写原始请求。您需要在package.json文件中使用该依赖项,即:

"dependencies": {
    "xmlhttprequest": "^1.8.0"
}

然后在你的函数中:

var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;

var request = new XMLHttpRequest();
request.addEventListener('load', doSomethingWithDataFromResponse);
request.open("GET","http://urlToMyServer");  
request.send();

function doSomethingWithDataFromResponse() {
  var data = this.responseText;
  //etc.
}

对于POST这样的事情:

var request = new XMLHttpRequest();
var params = "word=foo"; //or stringify some JSON
request.addEventListener('load', doSomethingWithDataFromResponse);
request.open("POST","http://urlToMyServer"); 
request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); // or application/json etc.
request.send(params);

我最近是如何从节点服务器向其他第三方服务器发出请求的。我还没有机会尝试使用Firebase,但所有文档似乎都表明它应该可行。

相关问题