【发布时间】:2020-03-18 05:18:45
【问题描述】:
我正在编写一个游戏,用户可以在其中保存和加载创建的“地图”,这些“地图”由定义自上而下地图顶点的点组成(想想 1993 年的 Doom WAD)。
我获取一个顶点(节点)列表并将它们序列化。
let nodes = [{'x': 1, 'y': 1}, {'x': 5, 'y': 4}, ...];
const data = JSON.stringify(nodes);
然后将它们插入到表格中
connection.query('INSERT INTO mapnodes VALUES (?)', [data], (error, results, fields) => {
...
});
问题是当我真的想插入单个字符串值时,mysql驱动程序所做的转义会将序列化的字符串变成一个数组。
这是mysql驱动看到的:
"INSERT INTO mapnodes VALUES ('[object Object],[object Object], ...')"
我的问题是 1) 这是一个糟糕的数据库架构吗?我应该以不同的方式存储节点吗?
和 2) 我怎样才能同时转义字符串并将其保留为单个字符串值?
编辑: 实际上,POST 请求是将字符串更改为 JSON 对象的原因,但问题仍然存在 - 这是存储潜在数千个坐标的推荐方式吗?
【问题讨论】:
标签: javascript mysql json serialization