Javascript 谷歌云功能无法捕获post请求

Javascript 谷歌云功能无法捕获post请求,javascript,post,google-cloud-platform,google-cloud-functions,Javascript,Post,Google Cloud Platform,Google Cloud Functions,我的目标是使用谷歌云功能将post请求的结果插入bigquery 我的问题是,云函数在我的表中插入空值,因此它无法从post请求中获取参数 以下是我的发帖请求: <script> var event_category = 'action'; var event_name = 'click'; var page_url = 'test' var request = new XMLHttpRequest(); request.open('POST', 'url to my cloud f

我的目标是使用谷歌云功能将post请求的结果插入bigquery

我的问题是,云函数在我的表中插入空值,因此它无法从post请求中获取参数

以下是我的发帖请求:

<script>
var event_category = 'action';
var event_name = 'click';
var page_url = 'test'
var request = new XMLHttpRequest();
request.open('POST', 'url to my cloud function');
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
        params = {
              event_category: event_category, 
              event_name: event_name, 
              page_url: page_url
              } 
request.send( JSON.stringify(params));
console.log(JSON.stringify(params));
</script>

如前所述,问题在于从google cloud函数读取post请求,不确定如何取消阻止该请求,而不是使用
req.body
使用
req.query
,然后像这样通过URL传递变量,对于HTTP事件触发Google云函数
https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/FUNCTION_NAME?event_category=CATEGORY&event_name=EVENT&page_url=URL

当我试图使用您的代码进行复制时,没有分配变量,因此在最后它们是未定义的,但是在将
req.body
修改为
req.query
后,我能够获得正确的值

以下是Google Cloud函数的示例代码:

var event_category;
var event_name;
var page_url;

event_category = req.query.event_category;
event_name = req.query.event_name;
page_url = req.query.page_url;

console.log("===VALUES===");
console.log(event_category);
console.log(event_name);
console.log(page_url);

之后,您将看到Google Stackdrive日志页面中记录的值

而不是
req.body
使用
req.query
然后像这样通过URL传递变量,对于HTTP事件触发Google云函数
https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/FUNCTION_NAME?event_category=CATEGORY&event_name=EVENT&page_url=URL

当我试图使用您的代码进行复制时,没有分配变量,因此在最后它们是未定义的,但是在将
req.body
修改为
req.query
后,我能够获得正确的值

以下是Google Cloud函数的示例代码:

var event_category;
var event_name;
var page_url;

event_category = req.query.event_category;
event_name = req.query.event_name;
page_url = req.query.page_url;

console.log("===VALUES===");
console.log(event_category);
console.log(event_name);
console.log(page_url);

之后,您将看到Google Stackdrive日志页面中记录的值

有一种方法可以处理实际的帖子,而不必求助于获取。。。从


有一种方法可以处理一个实际的职位,而不必求助于获取。。。从

const escapeHtml = require('escape-html');

/**
 * Responds to an HTTP request using data from the request body parsed according
 * to the "content-type" header.
 *
 * @param {Object} req Cloud Function request context.
 * @param {Object} res Cloud Function response context.
 */
exports.helloContent = (req, res) => {
  let name;

  switch (req.get('content-type')) {
    // '{"name":"John"}'
    case 'application/json':
      name = req.body.name;
      break;

    // 'John', stored in a Buffer
    case 'application/octet-stream':
      name = req.body.toString(); // Convert buffer to a string
      break;

    // 'John'
    case 'text/plain':
      name = req.body;
      break;

    // 'name=John' in the body of a POST request (not the URL)
    case 'application/x-www-form-urlencoded':
      name = req.body.name;
      break;
  }

  res.status(200).send(`Hello ${escapeHtml(name || 'World')}!`);
};