Я создал экспресс-приложение в Node.js
и я использую MySQL как хранилище документов
Columns
id: integer
value: JSON
когда я запрашиваю базу данных MySQL через mysql, я получаю результат:
RowDataPacket {
id: '1',
date: '2018-02-25T17:48:52.000Z',
value: '{"name": "Andreas", "username": "andreaslacza", "gender": "Male"}'
},
// ... and so on
вы можете видеть, что мой JSON вложен в значения, но мне нужен вывод следующим образом, чтобы работать с ним в усах/рулях:
RowDataPacket {
"id": 1,
"date": "2018-02-25T17:48:52.000Z",
"value": {
"name": "Andreas",
"username": "andreaslacza",
"gender": "Male"}
},
Вам нужно итерации через массив результатов и применить JSON.parse
для каждого значения.
Как это
'use strict'
let resultData = [
{
id: '1',
date: '2018-02-25T17:48:52.000Z',
value: '{"name": "Andreas", "username": "andreaslacza", "gender": "Male"}'
},{
id: '1',
date: '2018-02-25T17:48:52.000Z',
value: '{"name": "Andreas", "username": "andreaslacza", "gender": "Male"}'
}
];
resultData.forEach(function(entry) {
entry.value = JSON.parse(entry.value);
});
console.log(resultData);
Следующие фрагменты предполагают, что вы используете что-то вроде async/await
с JavaScript, хотя это будет работать так же, если вы используете обратные вызовы и обещания.
Предположим, вы используете что-то подобное, чтобы получить информацию из своей базы данных
// Get data from our DB using the 'mysql' library...
var dbResult = await dbRequest();
var data = JSON.parse(dbResult.value);
Затем вы сможете взять объект dbResult.value
и преобразовать его в JSON, как мы это делали выше. Это позволит нам использовать его как объект JavaScript, как любой объект.
Затем мы можем ввести его в шаблон руля и использовать что-то вроде следующего. Это предполагает, что вы передаете его в дескрипторы с объектом с именем "данные", хотя он может также быть "пользователем" или даже "этим".
<p>{{data.name}}</p>
<p>{{data.username}}</p>
Что будет
Andreas
andreaslacza
value
приходит в виде строки, вам нужно использоватьJSON.parse
для свойстваvalue