我试了下,使用JSON类型不会转成字符串的。
先建表
create table t1 (jdoc JSON);
插入数据
const insertTest = () => {
const obj = {
name: 'blackmatch',
age: 29,
};
const sql = `INSERT INTO t1 VALUES('${JSON.stringify(obj)}');`;
connection.query(sql, (error, results, fields) => {
if (error) {
throw error;
}
console.log(results);
});
};
查询数据,检查类型
const queryTest = () => {
const sql = 'SELECT * from t1;';
connection.query(sql, (error, results, fields) => {
if (error) {
throw error;
}
console.log(results);
for (const row of results) {
const obj = JSON.parse(row.jdoc);
console.log(typeof (obj.age));
}
});
};
结果:

完整代码
const mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '123',
database: 'nodejs'
});
connection.connect();
const insertTest = () => {
const obj = {
name: 'blackmatch',
age: 29,
};
const sql = `INSERT INTO t1 VALUES('${JSON.stringify(obj)}');`;
connection.query(sql, (error, results, fields) => {
if (error) {
throw error;
}
console.log(results);
});
};
const queryTest = () => {
const sql = 'SELECT * from t1;';
connection.query(sql, (error, results, fields) => {
if (error) {
throw error;
}
console.log(results);
for (const row of results) {
const obj = JSON.parse(row.jdoc);
console.log(typeof (obj.age));
}
});
};
queryTest();