Я пишу игру, в которой пользователи могут сохранять и загружать созданные «карты», состоящие из точек, которые определяют вершины нисходящей карты (например, Doom WAD 1993 года).
Я беру список вершин (узлов) и сериализую их.
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], ...')"
My вопросы 1) это плохая схема базы данных? Должен ли я хранить узлы по-другому? и 2) Как я могу одновременно экранировать строку и сохранить ее в одном строковом значении?
РЕДАКТИРОВАТЬ: На самом деле запрос POST - это то, что изменяет строку на объект JSON, но остается вопрос: рекомендуется ли хранить тысячи координат?