我有一个products表,其中我将产品图像路径存储为JSON字符串(MariaDB中的LONGTEXT类型),但是,当我使用Node.js查询数据库以获得产品列表并将数据发送到客户端时,它将图像路径作为字符串而不是数组对象接收。问:有没有一种方法可以告诉MySQL/MariaDB将LONGTEXT字段作为JSON返回,或者我需要在Node.js中创建一个帮助函数来完成这项工作?
ilmyapht1#
你可以尝试使用一个transform()JSON
CONVERT( your_long_text_col, JSON)
字符串测试
select concat('"', CONVERT( '{"id": 1, "name": "Monty"}', JSON), '"');
型
dl5txlt92#
如果您需要从Mysql 5.7 JSON**(json类型)迁移到MariaDB 10.6 JSON(文本类型),可以使用自定义JSONTextField代替模型。JSONField**它不需要任何数据迁移,可以在没有任何数据库更改的情况下使用,并且适用于mysql和mariadb
from django.db.models import JSONField from django.db.models.fields.json import DataContains, JSONExact class JSONTextField(JSONField): def db_type(self, connection): return "text" class JSONTextExact(JSONExact): def process_lhs(self, compiler, connection, lhs=None): lhs, lhs_params = super().process_lhs(compiler, connection, lhs=lhs) lhs = "JSON_EXTRACT(%s, '$')" % lhs return lhs, lhs_params JSONTextField.register_lookup(JSONTextExact) JSONTextField.register_lookup(DataContains)
字符串
2条答案
按热度按时间ilmyapht1#
你可以尝试使用一个transform()JSON
字符串
测试
型
dl5txlt92#
如果您需要从Mysql 5.7 JSON**(json类型)迁移到MariaDB 10.6 JSON(文本类型),可以使用自定义JSONTextField代替模型。JSONField**
它不需要任何数据迁移,可以在没有任何数据库更改的情况下使用,并且适用于mysql和mariadb
字符串