【发布时间】:2018-09-27 08:16:55
【问题描述】:
我正在尝试通过 node-mysql 模块从 Node.js 应用程序中的 Mysql 获取 JSON 类型的数据。
在数据库上运行此查询:
SELECT countries.id,
countries.country_name,
Json_object("start", start_port, "end", end_port)
ten_minutes,
Json_object("start", start_port + 10000, "end", end_port + 10000)
one_minutes,
Json_object("start", start_port + 20000, "end", end_port + 20000)
thirty_minutes
FROM countries
JOIN countries_port_ranges
ON country_id = countries.id;
返回:
1 Afghanistan {"start": 8000, "end": 8029} {"start": 18000, "end": 18029} {"start": 28000, "end": 28029}
2 Albania {"start": 8030, "end": 8059} {"start": 18030, "end": 18059} {"start": 28030, "end": 28059}
3 Algeria {"start": 8060, "end": 8089} {"start": 18060, "end": 18089} {"start": 28060, "end": 28089}
当我通过 node-mysql 或 Sequelize 运行这个查询时,我得到这个结果:
[{
"id": 1,
"country_name": "Afghanistan",
"ten_minutes": "{\"start\": 8000, \"end\": 8029}",
"one_minutes": "{\"start\": 18000, \"end\": 18029}",
"thirty_minutes": "{\"start\": 28000, \"end\": 28029}"
},
{
"id": 2,
"country_name": "Albania",
"ten_minutes": "{\"start\": 8030, \"end\": 8059}",
"one_minutes": "{\"start\": 18030, \"end\": 18059}",
"thirty_minutes": "{\"start\": 28030, \"end\": 28059}"
},
{
"id": 3,
"country_name": "Algeria",
"ten_minutes": "{\"start\": 8060, \"end\": 8089}",
"one_minutes": "{\"start\": 18060, \"end\": 18089}",
"thirty_minutes": "{\"start\": 28060, \"end\": 28089}"
}]
app.js:
async (req, res) => {
const q = `SELECT...`
const query = await sequelize.query(q, { type: sequelize.QueryTypes.SELECT })
res.send(query)
}
我的问题是-如何获得纯 JSON(没有反斜杠)而不是转义字符串?
预期:
{
"id": 3,
"country_name": "Algeria",
"ten_minutes": {"start": 8060, "end": 8089},
"one_minutes": {"start": 18060, "end": 18089},
"thirty_minutes": {"start": 28060, "end": 28089}
}
** 避免再次编辑返回数据(通过运行一些地图功能..)
谢谢。
【问题讨论】:
-
尝试 res.send(query.toJson())
-
它不起作用。
-
请看这个问题。它可能会帮助你。 stackoverflow.com/questions/39634035/…
标签: mysql sql json node.js sequelize.js