Хотите получить данные из базы данных и отобразить их в html-файле

Я сделал это, извлекая данные из базы данных и сохраняя объект в моем файле node js, но я не могу отправить этот объект в мой файл JavaScript Clint.
Я пробую 2-3 способа, но не могу получить доступ к своему объекту в файле javascript; да, я не хочу делать это с помощью файла .ejs. Мне нужно выполнить некоторую операцию с «данными» в файле javascript.

app.post('/submit-rowmatrial', (req, res) => {
const connection = mysql.createConnection({
host: 'localhost',
user: 'username',
password: 'password',
database: 'mydb'
});

app.get('/:id', (req, res) => {
const tagId = req.params.id;
// console.info(tagId)
if (tagId !== 'manage-stock') return;
const sql = 'select  itam_name,sum(quantity) as value_sum from raw_materials group by      itam_name';
let connection = create_conection();
connection.query(sql, (err, result) => {
if (err) throw err;
// store the result in a variable
data = result;
connection.end((err) => {
if (err) throw err;
console.info('Connection closed!');
});
res.json(data);
});
});

>! теперь я пытаюсь получить данные в файле javascript

fetch('http://localhost:3002/manage-stock')
.then(response => response.json())
.then(data => {
console.info(data);
for(let i=0; i<data.length; i++){
let ob = data[i];
let values = Object.values(ob);
iteam_name=values[0];
quantity=values[1];
console.info(iteam_name+" -> "+quantity);
}
})

В сторону: app.post не закрыт. Вы должны правильно отформатировать свой код, чтобы вы могли более четко видеть проблемы.

Andy 30.03.2023 11:03
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
85
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Внесение нескольких изменений в код

app.post('/submit-rowmatrial', (req, res) => {
  const connection = mysql.createConnection({
    host: 'localhost',
    user: 'username',
    password: 'password',
    database: 'mydb',
  });
});

это первый раздел. Здесь переменная соединения ограничена только первым обратным вызовом app.post().

Лучший способ справиться с подключением к базе данных — создать отдельную глобальную переменную или экспортировать ее из совершенно другого модуля. Кроме того, гораздо лучше создать новый пул соединений, а не просто соединение, которое многократно подключается и отключается для каждого запроса.

const pool = mysql.createPool({
  database: 'dbName',
  password: 'root',
  host:'localhost',
  user: 'root',
});

const db = pool.promise();

Используйте этот объект базы данных для создания запросов.

Теперь во второй части кода, где app.get('/:id')

if (tagId !== 'manage-stock') return; в этом операторе, даже если вы хотите выйти из функции, вам нужно вернуть некоторые данные обратно клиенту, иначе клиент будет ждать вечно.

поэтому вместо этого

if (tagId !== 'manage-stock'){
    return res.json({
        message:'tag id is not manage-stock',
    });
};

затем продолжите с остальной частью кода.

const sql = 'select itam_name,sum(quantity) as value_sum from raw_materials group by itam_name';

Используйте объект db для выполнения запроса

db.execute(sql)
  .then((data)=>{
     // data is an array of multiple objects along with the 
     // data fetched from the database and other related metadata.
     // the actual table data is present as the first element of data array
     // you can always console.info(data) to get a glimpse of what it is
     // returning.
     console.info(data);
     console.info(data[0]);
     return res.json(data[0]);
   })
  .catch((err)=>{
    throw err;
    // however you want to handle the error
  })

Пожалуйста, проголосуйте и примите ответ, если это сработало для вас. Это мотивирует нас отвечать на все больше и больше запросов на платформе.

Rituparna Warwatkar 30.03.2023 11:44

Другие вопросы по теме