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

c9qzyr3d  于 12个月前  发布在  Mysql
关注(0)|答案(2)|浏览(229)

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

ilmyapht

ilmyapht1#

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

CONVERT( your_long_text_col,  JSON)

字符串
测试

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

dl5txlt9

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)

字符串

相关问题