首页 > 解决方案 > 如何修复谷歌函数节点js上的“无法处理请求”

问题描述

所以..我这里有一个问题,我创建了多个函数。我的目标是使用简单的 AJAX 请求来调用它们。例如:

function createPost(title,description,category,subcategory,tags){
let data = {"kind":"Posts","key":""+title+"","value":{"category":""+category+"","description":""+description+"","subcategory":""+subcategory+"",
"tags":"{'tags' : [{'name':'Lince','color':'blue'},{'name':'BUG','color':'orange'}]}"}};
$.ajax({
    type: "POST",
    url: "https://"+REGION+"-"+PROJECT_ID+".cloudfunctions.net/"+DATASTORE_CREATE_POST+"",
    data: JSON.stringify(data), 
    crossDomain: true,
    dataType: 'json',
    contentType: 'application/json',
    success: function(response) {
          console.log(response);
    },
    error: function(response) {
              console.log(response);
    },
});}

我有这个功能来保存一个新的 Kind 键:

exports.set = (req, res) => {
//SET CORS
res.set('Access-Control-Allow-Origin', "*")
res.set('Access-Control-Allow-Methods', '*')
res.set('Access-Control-Allow-Headers','*')
// The value contains a JSON document representing the entity we want to save
if (!req.body.value) {
  throw new Error(
    'Value not provided. Make sure you have a "value" property in your request'
  );}
const key = getKeyFromRequestData(req.body);
  const entity = {
    key: key,
    data: req.body.value,
  };

  return datastore
    .save(entity)
    .then(() => res.status(200).send(`Entity ${key.path.join('/')} saved.`))
    .catch(err => {
      console.error(err);
      res.status(500).send(err.message);
      return Promise.reject(err);
    });
};

如果在google网站上测试这个功能,结果是OK的: 图片

但是,如果我想像之前所说的那样在 AJAX 请求上调用相同的函数。我得到:

错误:无法处理请求

标签: node.jsajaxgoogle-cloud-platformrequestgoogle-cloud-datastore

解决方案


推荐阅读