2017-07-19 140 views
4

我有一个主要的firebase云端功能主要功能。但我需要创建另一个更具体的使用主要云功能的功能。我可以通过一个免费帐户申请一个http Post或者从一个Firebase云端功能获取另一个Firebase云端功能吗?Firebase云端功能http请求到另一个Firebase云端功能

我试图做到这一点,但我得到'ENOTFOUND'消息,我想知道如果我的代码有问题或者它只是免费帐户的限制。

index.js
'use strict'; 
const functions = require('firebase-functions'); 

const express = require('express'); 
const app = express(); 

app.post('/test', function(req, res) { 
    var request = require('request') 

    var options = { 
     method: 'post', 
     body: req.body, // re-send the incoming body to the main cloud function 
     json: true, 
     url: '<main cloud url>', 
     headers: req.headers // re-send the incoming headers the main cloud function 
    } 
    request(options, function (err, response, body) { 
     if (err || response.statusCode != 200) { 
     res.status(400).send(err); //re-send the received error to the client 
     return 
     } 
     res.send(body); //re-send the received response to the client 
    }); 
}); 

exports.checkAtivation = functions.https.onRequest(app); 
+2

你能分享一下你的代码吗? –

+0

编辑将代码 –

回答

5

这是目前没有对星火计划从另一个HTTP云功能调用HTTP云功能成为可能。你将不得不升级到Blaze计划。

对于一个项目的函数来说,通过HTTP调用其他函数通常是没有意义的。如果您只是简单地将逻辑抽象为单个函数或所有端点可以共享的模块,那么项目中的所有代码都可以在所有函数之间共享。

+1

这是完全正确的;尝试将您的代码调用到JavaScript内部,而不是进行另一个HTTP调用。但是,我会补充一点,Blaze计划拥有比Spark计划更慷慨的免费配额,因此您可以在没有任何费用的情况下进行升级。 –

+0

@Doug - 是否有任何关于如何将函数抽象到模块中的教程? –

+0

我从未收到该错误并且仅更改了部署中的一行代码后才收到此错误。 (那不是通过http调用firebase函数) –