如何访问来自 GCP pubsub 的单个请求参数作为云功能节点 js 的输入?
How to access individual request param coming from GCP pubsub as a input to the cloud function node js?
我正在用 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}!`);
};
发布的 pubsub 消息是:
{
"companyName": "my-company",
"companyLocation": "my-location"
}
当我尝试从上面发布的消息访问我的云函数中的 "companyName" 时,我得到的日志输出为 "company name is undefined"。下面是我正在尝试的代码:
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}!`);
};
我正在用 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}!`);
};
发布的 pubsub 消息是:
{
"companyName": "my-company",
"companyLocation": "my-location"
}
当我尝试从上面发布的消息访问我的云函数中的 "companyName" 时,我得到的日志输出为 "company name is undefined"。下面是我正在尝试的代码:
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}!`);
};