Как мутировать с помощью специальных символов GraphQL и HTML с помощью JavaScript?

Я получаю электронные письма из IMAP и хочу сохранить их в PostgreSQL через Hasura GraphQL API. Поскольку HTML и специальные символы не могут быть в действительном запросе GraphQL, мне нужно избавиться от них. Удалите или замените чем-то приемлемым. Это приводит к уродливому и неформатированному контенту в БД. Погуглил, но не смог найти хорошего или хотя бы почти идеального решения для получения наиболее читаемого (в идеале без потерь) контента в PostgreSQL.

Мне нужно создать панель администратора, в которой электронные письма могут быть назначены пользователям и иметь другие отношения и разные права (например, одна роль не будет видеть адреса электронной почты и возможные номера телефонов, а также другие контакты, удаленные из содержимого электронной почты). Но они могут ответить из системы. Все просто, кроме вопроса, как получить измененное письмо в формате HTML в БД.

Может быть, мне не следует использовать GraphQL. Может быть, не JavaScript. Я также могу кодировать на PHP, если это проще, но я предпочитаю JavaScript, поскольку я использую рабочий процесс N8N.io, и я могу легко использовать там JavaScript. Я также рассматривал вариант использования сжатия PostgreSQL, но тогда я не могу использовать панель администратора Directus.io (которая используется) для просмотра, редактирования и добавления отношений к электронным письмам.

Вы должны иметь возможность передавать произвольный контент в качестве входных данных GraphQL, используя блок переменных JSON. Как вы думаете, от каких персонажей вам нужно сбежать? (Пробел ASCII U+0020 имеет особое значение в GraphQL как разделитель токенов, но он также, возможно, составляет 20% вашего сообщения; он «особый»?) Можете ли вы использовать библиотеки GraphQL/HTML/SQL, которые правильно обрабатывают экранирование для вас ?

David Maze 26.11.2022 13:26

Большое спасибо! JSON также был вариантом, который я нашел, но панель администратора Directus.io не отобразит мне хороший редактор WYSIWYG. Опция «Библиотеки GraphQL/HTML/SQL» Я не уверен, так как не искал Google, чтобы понять, как они работают.

Kaspar L. Palgi 26.11.2022 15:09

Хорошо, я думаю, что неправильно вас понял, @DavidMaze, и подумал, что вы предлагаете хранить JSON в поле БД. Поскольку я все еще борюсь с этим, я перечитал ваше сообщение и понял, что вы предлагаете передавать содержимое через переменные в виде JSON. Я сейчас попробовал это, и теперь это терпит неудачу по-другому. Он не говорит «Неверный запрос GRAphQL», но теперь: «ОШИБКА: сбой при использовании переменных. С сообщением об ошибке: SyntaxError: Неожиданный токен в JSON в позиции 130». Вот запрос и переменные: github.com/service-host/vercel-test/tree/main/gql

Kaspar L. Palgi 12.01.2023 11:31
Поведение ключевого слова "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) для оценки ваших знаний,...
2
3
80
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Из вашего variable.json я вижу, что в вашем JSON есть разрывы строк. После удаления разрывов строк JSON становится действительным. JSON не допускает реальных разрывов строк, поэтому вместо этого вы должны использовать \n. Поскольку у вас есть HTML и вы используете <br> для разрывов строк, вы можете просто удалить настоящие разрывы строк, например, так:

someText = someText.replace(/(\r\n|\n|\r)/gm, "");

Подробнее об удалении разрывов строк с помощью JavaScript здесь: https://www.textfixer.com/tutorials/javascript-line-breaks.php

Вы можете скопировать свой JSON, например, в VSCode, и вы увидите, действителен ли ваш JSON . В коде вы также можете проверить с помощью JavaScript , является ли строка действительной в формате JSON.

Я на шаг впереди. Большое спасибо. Теперь я успешно изменяю половину своего массива, а затем снова получаю ошибку JSON. Я проверю, что еще там не так, позже. Большой шаг вперед, и теперь я знаю, где и как искать проблему.

Kaspar L. Palgi 12.01.2023 11:58

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