如何在MySQL/MariaDB中将LONGTEXT字段返回为JSON

c9qzyr3d  于 2023-11-19  发布在  Mysql
关注(0)|答案(2)|浏览(280)

我有一个products表,其中我将产品图像路径存储为JSON字符串(MariaDB中的LONGTEXT类型),但是,当我使用Node.js查询数据库以获得产品列表并将数据发送到客户端时,它将图像路径作为字符串而不是数组对象接收。
问:有没有一种方法可以告诉MySQL/MariaDB将LONGTEXT字段作为JSON返回,或者我需要在Node.js中创建一个帮助函数来完成这项工作?

ilmyapht

ilmyapht1#

你可以尝试使用一个transform()JSON

  1. CONVERT( your_long_text_col, JSON)

字符串
测试

  1. select concat('"', CONVERT( '{"id": 1, "name": "Monty"}', JSON), '"');

dl5txlt9

dl5txlt92#

如果您需要从Mysql 5.7 JSON**(json类型)迁移到MariaDB 10.6 JSON(文本类型),可以使用自定义JSONTextField代替模型。JSONField**
它不需要任何数据迁移,可以在没有任何数据库更改的情况下使用,并且适用于mysql和mariadb

  1. from django.db.models import JSONField
  2. from django.db.models.fields.json import DataContains, JSONExact
  3. class JSONTextField(JSONField):
  4. def db_type(self, connection):
  5. return "text"
  6. class JSONTextExact(JSONExact):
  7. def process_lhs(self, compiler, connection, lhs=None):
  8. lhs, lhs_params = super().process_lhs(compiler, connection, lhs=lhs)
  9. lhs = "JSON_EXTRACT(%s, '$')" % lhs
  10. return lhs, lhs_params
  11. JSONTextField.register_lookup(JSONTextExact)
  12. JSONTextField.register_lookup(DataContains)

字符串

展开查看全部

相关问题