Node-red Я не могу извлечь тело сообщения

Я начал использовать Node-Red для разработки панели управления MQTT, Я просто начал с простого примера, чтобы подписаться на тему и отладить сообщение. Однако мне не удалось получить значение json моего сообщения и преобразовать его из base64 в строку.

мое сообщение выглядит как парнишка:

"{"metrics":{},"body":"eyJjb250ZW50LXNwZWMiOiJ1cm46c3BlYzpcL1wvZWNsaXBzZS5vcmdcL3VuaWRlXC9tZWFzdXJlbWVudC1tZXNzYWdlI3YyIiwiZGV2aWNlIjp7ImRldmljZUlEIjoiMTMyNDUifSwibWVhc3VyZW1lbnRzIjpbeyJzZXJpZXMiOnsiJF90aW1lIjpbMF0sIlZBIjpbMjM5MzMwLjBdfSwidHMiOiIyMDE4LTA0LTI1VDA5OjM4OjU0LjIyOCswMDAwIn1dfQ= = "}"

Я хочу извлечь тело сообщения и преобразовать его.

Я уже пробовал эту функцию после использования JSONconverter:

return msg.payload.body;

но я получил его ошибку: «Функция попыталась отправить сообщение типа строка»

узлы

сообщение

С наилучшими пожеланиями

Привет, обновите вопрос, чтобы показать, что вы пытаетесь сделать. Название вопроса, похоже, не связано с основной частью вопроса - речь идет о подключении к брокеру или о получении значения из объекта сообщения?

knolleary 25.04.2018 14:58

Уважаемый knolleary, это была моя ошибка, извините, я обновил заголовок. Моя настоящая проблема заключается в получении значения из объекта сообщения. С наилучшими пожеланиями

Ahmed Garssallaoui 25.04.2018 15:38

Расскажите подробнее о том, что вы пробовали. Вы говорите: «Я пробовал эту функцию» ... но вы не предоставили код.

knolleary 25.04.2018 16:28

Спасибо за ответ, код обновил, функция простая: return msg.payload.body;

Ahmed Garssallaoui 25.04.2018 16:41
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
2 548
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Узел Function должен возвращать объект сообщения, а не простое значение. Вот почему вы получаете сообщение об ошибке, в котором говорится, что функция отправляет строку.

Если вы хотите, чтобы полезная нагрузка отправляемого сообщения была этим строковым значением, вы должны сделать:

msg.payload = msg.payload.body;
return msg;

Для такого рода вещей вам лучше использовать узел «Изменить» с двигатьсяmsg.payload.body на msg.payload.

Большое спасибо, мне нужно извлечь тело сообщения обоими методами, однако, когда я извлекаю сообщение и конвертирую его из 64base, у меня будет вывод String. Как преобразовать строку в JSON? Большое спасибо за вашу помощь

Ahmed Garssallaoui 25.04.2018 17:19

Если у вас есть строковое представление JSON, просто передайте сообщение через узел JSON, который вернет объект JSON.

hardillb 25.04.2018 17:29

Другие вопросы по теме