我正在用node js编写一个云函数,我的要求是GCP pubsub主题将发布json正文作为消息。这个pubsub主题是我的节点js云功能的触发点。这意味着每当我发布主题消息时,它都应该触发我的云功能。此功能正在按预期方式工作。但是问题出在我试图访问我的云函数中的Json请求数据的各个元素的地方。如果我将来自pubsub的数据记录到我的云函数中,则可以做到这一点。我的index.js
exports.helloPubSub = (data, context) => {
const pubSubMessage = data;
const messageData = pubSubMessage.data
? Buffer.from(pubSubMessage.data, 'base64').toString()
: 'World';
console.log(`message data is, ${messageData}!`);
};
发布的发布订阅消息为:
{
"companyName": "my-company",
"companyLocation": "my-location"
}
[当我尝试从上述发布的消息中访问云功能中的“ companyName”时,我得到的日志输出为“公司名称未定义”。下面是我正在尝试的代码:
exports.helloPubSub = (data, context) => {
const pubSubMessage = data;
const messageData = pubSubMessage.data
? Buffer.from(pubSubMessage.data, 'base64').toString()
: 'World';
console.log(`company name is, ${messageData.companyName}!`);
};
注意:我指的是https://cloud.google.com/functions/docs/tutorials/pubsub
您的有用答案将不胜感激。谢谢 !
您无法访问companyName
,因为您尝试从string
访问属性。
要访问从PubSub发送的数据,您需要使用JSON解析解码后的字符串。
尝试以下代码:
exports.helloPubSub = (event, context) => {
const message = Buffer.from(event.data, 'base64').toString();
const messageData = JSON.parse(message)
console.log(`company name is, ${messageData.companyName}!`);
};