我正在使用NodeJS /mysql 2/ MariaDB Ver 15.1 Distrib 10.6.7-MariaDB,如果我理解正确的话,JSON并不真正被支持。JSON是一个longBlob的别名,每次插入或更新都有一个JSON_VALID测试。
我不喜欢手动解析所有查询结果中的所有JSON对象。
我发现可以在mysql连接中注入一个typeCast函数。
typeCast: function (field, next) {
if ( field.length === "LONG_BLOB" ) {
try {
return JSON.parse( field.string() )
} catch (err){
return field.string();
}
} else {
return next();
}
}
这种方法在某些情况下可以很好地工作,但不是每次都可以
SELECT JSON_OBJECT('a', 1) ... will give a short blob
{
type: 'BLOB',
length: 12582912,
db: '',
table: '',
name: 'sctCap',
string: [Function: string],
buffer: [Function: buffer],
geometry: [Function: geometry]
}
是否有办法强制数据类型为LONG_BLOB或将字段强制转换为自定义数据类型?
提前感谢你的帮助
1条答案
按热度按时间wr98u20j1#
最后找到了一个解决办法,可能是笨......我也不知道.由于LONGBLOB的强制转换是不可能的,创建一个函数来得到它:
转换回JSON:
向mysql连接添加一个typeCast函数:
如果有一个简单的方法,请发表评论。提前感谢。