Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何访问来自GCP pubsub的单个请求参数作为云功能节点js的输入?_Node.js_Google Cloud Platform_Google Cloud Functions_Publish Subscribe_Google Cloud Pubsub - Fatal编程技术网

Node.js 如何访问来自GCP pubsub的单个请求参数作为云功能节点js的输入?

Node.js 如何访问来自GCP pubsub的单个请求参数作为云功能节点js的输入?,node.js,google-cloud-platform,google-cloud-functions,publish-subscribe,google-cloud-pubsub,Node.js,Google Cloud Platform,Google Cloud Functions,Publish Subscribe,Google Cloud Pubsub,我正在node js中编写一个云函数,我的要求是GCP pubsub主题将json主体作为消息发布。此子主题是my node js cloud函数的触发点。这意味着每当我发布一条来自主题的消息时,它都会触发我的云功能。此功能按预期工作。但问题是,我试图访问云函数中Json请求数据的单个元素。如果我将来自pubsub的数据记录在我的云函数中,我就能够做到这一点。 我的index.js exports.helloPubSub = (data, context) => { const pub

我正在node js中编写一个云函数,我的要求是GCP pubsub主题将json主体作为消息发布。此子主题是my node js cloud函数的触发点。这意味着每当我发布一条来自主题的消息时,它都会触发我的云功能。此功能按预期工作。但问题是,我试图访问云函数中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”时,我得到的日志输出是“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}!`);

};
注:我指的是


我们将非常感谢您的回答。谢谢大家!

您无法访问
公司名称
,因为您试图从
字符串
访问属性

要访问从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}!`);

};

您无法访问
公司名称
,因为您试图从
字符串
访问属性

要访问从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}!`);

};

此解决方案正按照我的预期工作。此解决方案正按照我的预期工作。