【问题标题】:How to mutate via GraphQL special characters and HTML with JavaScript?如何使用 JavaScript 通过 GraphQL 特殊字符和 HTML 进行变异?
【发布时间】:2023-01-12 19:04:12
【问题描述】:

我正在从 IMAP 获取电子邮件,并希望通过 Hasura GraphQL API 将它们存储在 PostgreSQL 中。由于 HTML 和特殊字符不能出现在有效的 GraphQL 查询中,我需要摆脱它们。删除或替换为可接受的内容。这最终导致数据库中出现丑陋且未格式化的内容。用谷歌搜索但无法真正找到一个好的或至少近乎完美的解决方案来获得 PostgreSQL 中最易读(理想情况下无损)的内容。

我必须创建一个管理面板,其中可以将电子邮件分配给用户并具有其他关系和不同的权限(例如,一个角色不会看到电子邮件地址和可能的电话号码以及从电子邮件内容中删除的其他联系人)。但他们可以从系统回复。一切都很简单,除了如何将修改后的 HTML 电子邮件发送到数据库的问题。

也许我不应该使用 GraphQL。也许不是 JavaScript。如果更容易的话,我也可以用 PHP 编码,但我更喜欢 JavaScript,因为我使用 N8N.io 工作流,而且我可以在那里轻松使用 JavaScript。我也在考虑的选项是使用 PostgreSQL 压缩,但我不能使用 Directus.io 管理面板(已使用)来查看、编辑和添加电子邮件关系。

【问题讨论】:

  • 您应该能够使用 JSON 变量块将任意内容作为 GraphQL 输入传递。你认为你需要逃脱哪些角色? (ASCII 空格 U+0020 在 GraphQL 中作为标记分隔符具有特定含义,但它也可能占你帖子的 20%;它是“特殊的”吗?)你能使用正确处理转义的 GraphQL/HTML/SQL 库吗?
  • 非常感谢! JSON 也是我发现的一个选项,但 Directus.io 管理面板不会向我显示一个不错的 WYSIWYG 编辑器。 “GraphQL/HTML/SQL 库”选项我不确定,因为没有谷歌了解它们是如何工作的。
  • 好吧,我想我理解错了,@DavidMaze 并认为你建议将 JSON 存储在数据库字段中。由于我仍在为此苦苦挣扎,因此我重新阅读了您的消息并了解到您建议通过变量将内容作为 JSON 传递。我现在试过了,现在它以不同的方式失败了。它没有说“无效的 GRaphQL 查询”,而是现在:“错误:使用变量失败。错误消息:SyntaxError:JSON 中位置 130 处的意外标记”。这是查询和变量:github.com/service-host/vercel-test/tree/main/gql

标签: javascript postgresql graphql special-characters directus


【解决方案1】:

我可以从你的variables.json 看到你的 JSON 中有换行符。删除换行符后,JSON 变为有效。 JSON 不允许真正的换行符,因此您必须改用 。因为您有 HTML 并使用 <br> 作为换行符,您可以删除真正的换行符,例如:

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

更多关于使用 JavaScript 删除换行符的信息:https://www.textfixer.com/tutorials/javascript-line-breaks.php

你可以copy your JSON to VSCode for example and you will see if your JSON is valid。代码中也可以用JavaScriptif the string is valid a valid JSON查看。

【讨论】:

  • 我领先一步。非常感谢。我现在成功地改变了一半的数组,然后再次出现 JSON 错误。稍后我会检查那里还有什么问题。向前迈出了一大步,我知道现在在哪里以及如何寻找问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-11
  • 2017-01-25
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多