gpt4 book ai didi

node.js - 无法从我的云函数内的 Gupshup.io API 读取整个 webview 回调

转载 作者:太空宇宙 更新时间:2023-11-04 03:26:52 25 4
gpt4 key购买 nike

我有一个用 Node-js 编写的 Google Cloud 函数,每次有人提交 Gupshup's serverless webview form 时都会调用该函数。

我希望在我的网络服务中收到以下输入:

{
"linkId": "f42414e2-ce1a-4bf5-b40a-e88e4d4d9aee",
"payload": [{
"fieldname": "name",
"fieldvalue": "Alice"
},{
"fieldname": "gender",
"fieldvalue": "Male"
},{
"fieldname": "account",
"fieldvalue": "savings"
},{
"fieldname": "interest",
"fieldvalue": "Cooking"
}],
"time": 1479904354249,
"userid": "UserID"
}

但是我在获取“有效负载”内的对象、时间和用户 ID 对象时遇到问题。

这是我的代码:

exports.orderForm = (req, res) => {
const data = req.body;
const ref = data.userid;
var propValue;

console.log(req.method); // POST
console.log(req.get('content-type')); // application/x-www-form-urlencoded
console.log(req.body.linkid); // undefined
console.log(req.body.payload[0].fieldname); // cannot read property from undefined error
console.log(req.body.time); //undefined
console.log(req.body.userid); // undefined

// I attemp to print the properties, but they won't print
for(var propName in req.body.payload) {
propValue = req.body.payload[propName];
console.log(propName, propValue);
}

console.log('JSON.stringify: ' + JSON.stringify(req.body)); // This prints the following:
// JSON.stringify: {"{\"linkId\":\"f42414e2-ce1a-4bf5-b40a-e88e4d4d9aee\",\"payload\":":{"{\"fieldname\":\"account\",\"fieldvalue\":\"savings\"},{\"fieldname\":\"name\",\"fieldvalue\":\"Alice\"},{\"fieldname\":\"gender\",\"fieldvalue\":\"Male\"},{\"fieldname\":\"interest\",\"fieldvalue\":\"Cooking\"}":""}}

res.sendStatus(200);
};

如您所见,stringify 允许查看所有有效负载属性,但在此之前我无法在 js 对象中访问它们。

第二个问题是 stringify 之后的事件我看不到时间和用户 ID。

我怀疑我必须以不同于我习惯的方式处理 content-type="application/x-www-form-urlencoded"的请求,但我找不到任何示例。

最佳答案

提交无服务器 Web View 表单后,您从 Gupshup 收到的回调响应已经是一个字符串化对象。

因此,您需要使用 JSON.parse() 解析它以获取 JSON 对象,然后您将能够获取值。

示例代码

exports.orderForm = (req, res) => {
const data = JSON.parse(req.body);
console.log(data.linkid); // undefined
console.log(data.payload[0].fieldname);
console.log(data.time);
console.log(data.userid);
};

这应该可以解决您的问题。

关于node.js - 无法从我的云函数内的 Gupshup.io API 读取整个 webview 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43557022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com