С сервера node.js Я пытаюсь отправить данные в Pub / Sub topi c и затем запустить облачную функцию, как только она сработает.
Я успешно отправляю сообщения в Pub / Sub, однако, когда я пытаюсь интерпретировать данные в функции, я получаю сообщение об ошибке «Телеметрические данные не предоставлены» - см. Нижеприведенную функцию.
Я получаю следующее: https://github.com/GabeWeiss/GoogleIoTCoreApp/tree/master/gcf/telemetryToFirestore
Вот как я это называю (это работает):
const pubsub = new PubSub();
const topicName = 'topixXx';
const dataJ = JSON.stringify([{"temperature": 1}, {"bpm": 2}]);
const dataBuffer = Buffer.from(dataJ);
const messageId = pubsub.topic(topicName).publish(dataBuffer);
res.end(`Message ${messageId} published.`);
А вот CGF (я вырезал часть функции, в данном случае она не нужна):
const admin = "...";
admin.initializeApp();
var db = "..";
exports.telemetryToFirestore = (event, callback) => {
const pubsubMessage = event.data;
throw new Error("pubsubMessage.data: "+pubsubMessage.data);
if (!pubsubMessage.data) {
throw new Error('No telemetry data was provided!');
}
const payload = Buffer.from(pubsubMessage.data, 'base64').toString();
const telemetry = JSON.parse(payload);
db.collection(......)
callback(.....);
};