我正在使用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 请求?
答案 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,但所有文档似乎都表明它应该可行。