firebase Google Cloud函数调用托管在Google App Engine上的URL

rlcwz9us  于 2023-03-24  发布在  Go
关注(0)|答案(1)|浏览(146)

我有一个firebase数据库,我希望创建一个云函数,当添加一个子节点到父节点时触发,它应该调用一个url,并在父节点中添加子节点的参数。
被调用的URL是托管在Google App Engine中的NodeJS Express应用程序。
我该怎么做呢,如果可能的话?

uxhixvfz

uxhixvfz1#

您可以使用node.js request库来完成此操作。
由于在云函数内部,当执行异步任务时必须返回Promise,因此需要使用接口 Package 器来处理请求,如request-promise
你可以沿着这些路线做一些事情:

.....
var rp = require('request-promise');
.....

exports.yourCloudFucntion = functions.database.ref('/parent/{childId}')
    .onCreate((snapshot, context) => {
      // Grab the current value of what was written to the Realtime Database.
      const createdData = snapshot.val();

      var options = {
          url: 'https://.......',
          method: 'POST',
          body: ....
          json: true // Automatically stringifies the body to JSON
      };

      return rp(options);

    });

如果您想将参数传递给您正在调用的HTTP(S)服务/端点,您可以通过请求的主体来完成,例如:

.....
      const createdData = snapshot.val();

      var options = {
          url: 'https://.......',
          method: 'POST',
          body: {
              some: createdData.someFieldName
          },
          json: true // Automatically stringifies the body to JSON
      };
      .....

或者通过一些查询字符串键值对,比如:

.....
      const createdData = snapshot.val();
      const queryStringObject = { 
         some: createdData.someFieldName,
         another: createdData.anotherFieldName
      };

      var options = {
          url: 'https://.......',
          method: 'POST',
          qs: queryStringObject
      };
      .....

相关问题