Node.js + Espress + MySQL как хранилище документов (результаты)

0

Я создал экспресс-приложение в Node.js

  • экспресс v4.16.2
  • mysql v2.15.0

и я использую 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"}
},
  • 0
    поскольку value приходит в виде строки, вам нужно использовать JSON.parse для свойства value
  • 0
    @suraj.tripathisuraj.tripathi как я могу сделать это для всех значений?
Показать ещё 2 комментария
Теги:
express
nosql

2 ответа

0

Вам нужно итерации через массив результатов и применить 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);
0

Следующие фрагменты предполагают, что вы используете что-то вроде 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню