发送表单数据到firebase函数

whlutmcx  于 2023-05-07  发布在  其他
关注(0)|答案(2)|浏览(193)

我想从我的javascript网页发送数据到firebase云函数(HTTP请求)。
我看过一些关于使用Busboy的教程,但那是在云函数方面。我想知道的是我如何将其发送到客户端网页的功能。
如Google Cloud Functions文档中所示,我在Firebase Function中使用了以下代码。

...
busboy.on('field', (fieldname, val) => {
    // TODO(developer): Process submitted field values here
    console.log(`Processed field ${fieldname}: ${val}.`);
    fields[fieldname] = val;
  });
...

先谢谢你了。

t9eec4r0

t9eec4r01#

如果使用“标准”HTTPS Cloud Function,则需要使用JavaScript从Web页面发出HTTP请求。一种方法是使用axios库。
很简单:
你在html页面的head部分声明这个库

<head>
  ...
  <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  ...
</head>

而且,在JavaScript代码中,您通过其URL调用Cloud Function。下面是一个POST请求的例子:

axios.post('https://us-central1-<project-id>.cloudfunctions.net/<your-cloud-cunction-name>', {
    firstName: 'Fred',
    lastName: 'Flintstone'
  })
  .then(function (response) {
    console.log(response);
    //Do whatever you wantwith the response object, returned by the HTTPS Cloud Function
  })
  .catch(function (error) {
    console.log(error);
  });

在云函数中,您可以执行req.body.firstNamereq.body.lastName来获取POST请求体中传递的值。如果不需要通过请求体传递值,可以使用GET方法(并可能通过查询字符串传递一些值)。
如果你想在Cloud Function中使用'busboy'库来解析'multipart/form-data'上传请求(如你在问题中提到的示例所示),下面的Stack Overflow答案解释了如何使用axios来完成:
axios post request to send form data
请注意,Firebase提供了另一种类型的HTTP云函数:HTTPS Callable Functions
使用此类型,您可以使用Firebase提供的专用Cloud Functions客户端库从Web前端调用它。文档显示了以下示例:

var addMessage = firebase.functions().httpsCallable('addMessage');
addMessage({text: messageText}).then(function(result) {
  // Read result of the Cloud Function.
  var sanitizedMessage = result.data.text;
  // ...
});

看看文档,它详细解释了所有步骤(如何编写云函数以及如何调用它)。

vfh0ocws

vfh0ocws2#

我知道,axios不是像formData(图片和其他)这样的对象的最佳解决方案,如果你使用fetch可能会更好?

相关问题