Я сделал это, извлекая данные из базы данных и сохраняя объект в моем файле 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('/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
})
Пожалуйста, проголосуйте и примите ответ, если это сработало для вас. Это мотивирует нас отвечать на все больше и больше запросов на платформе.
В сторону:
app.post
не закрыт. Вы должны правильно отформатировать свой код, чтобы вы могли более четко видеть проблемы.