У меня есть некоторые данные, которые мне нужно хранить внутри таблицы mysql.В таблице есть несколько столбцов, среди которых есть столбцы book
и authors
, оба из которых являются полями TEXT.Мне нужно сохранить объект javascript в столбце книги и массив объектов в столбце авторов.
Внутри моего углового компонента у меня есть объект book и массив объектов авторов.
const book = {
title: "hello world",
subtitle: "learn C programming in a week",
cover: "path/to/cover.png"
};
const authors = [{id: 3, name: "John Doe"}, {id: 4, name: "Jane Doe"}];
Объект, который я передаю своему сервису для обработки запроса на публикацию, выглядит примерно так:
{
id: this.generateId(),
category: this.category,
book: JSON.stringify(book),
authors: JSON.stringify(authors),
price: this.price
}
Оба они подвергаются строковому преобразованию через JSON.stringify(...)
и затем успешно публикуются в базе данных.Нет проблем там.Я должен также упомянуть, что значения объекта собираются и помещаются в оператор SQL в запросе POST, например ...
`INSERT INTO library (id, category, book, authors)
VALUES ('${obj['id']}',
'${obj['category']}',
'${obj['book']}',
'${obj['authors']}')`
Однако, когда я пытаюсь извлечь данные из этой таблицы через мой угловой сервис, угловой бросает ошибку Http failure during parsing for http://localhost:4200/
.
Когда я запускаю тот же запрос через postman
, я возвращаю данные, но затем, когда я проверяю правильность возвращенного JSON, он не действителен.Возвращенные данные выглядят примерно так ... title"
подсвечивается с ошибкой Expecting comma, colon or }, not string
[
{
"book": "{
"title": "hello world",
"subtitle": "learn C programming in a week",
"cover": "path/to/cover.png"
}",
"authors": "[{"id": "3", "name": "John Doe"}, {"id": "4", "name": "Jane Doe"}]"
}
]
Чего мне не хватает?Как мне вернуть действительный JSON?