Как получить доступ к индивидуальному параметру запроса, поступающему из pubsub GCP, в качестве входа в облачную функцию node js? - PullRequest
0 голосов
/ 20 марта 2020

Я пишу облачную функцию в node js. Мое требование - чтобы GCP pubsub topi c публиковал sh a json тело в качестве сообщения. Этот pubsub topi c является точкой запуска моей облачной функции node js. Это означает, что всякий раз, когда я публикую sh сообщение от topi c, оно должно запускать мою облачную функцию. Эта функциональность работает как положено. Но проблема возникает, когда я пытаюсь получить доступ к отдельному элементу Json данных запроса в моей облачной функции. Если я регистрирую данные, поступающие из pubsub, в свою облачную функцию, я могу это сделать. Мой индекс. 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" в моей облачной функции из опубликованного выше сообщения, я получаю вывод журнала как "название компании не определено". Ниже приведен код, который я пытаюсь использовать:

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

Ваши полезные ответы будут оценены. Спасибо !

1 Ответ

2 голосов
/ 20 марта 2020

Вы не можете получить доступ к 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}!`);

};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...