Я делаю:
let con = mysql.createConnection({
host : conf.get('db').connection,
user : conf.get('db').user,
password : conf.get('db').pass,
database : conf.get('db').database
});
con.query('SELECT * FROM `clothing`', function(error, result, fields){
if(error == null){
var presets = [];
result.forEach(function(v, i){
presets.push({
'name': v.name,
'torso': [v.torso_draw, v.torso_tex],
'legs': [v.legs_draw, v.legs_tex],
'foot': [v.foot_draw, v.foot_tex],
'torso_acc': [v.torso_acc_draw, v.torso_acc_tex],
'hands': [v.hands_draw, v.hands_tex],
'helmet': [v.helmet_draw, v.helmet_tex],
'mask': [v.mask_draw, v.mask_tex]
});
});
response.json(presets);
} else{
console.log(error);
}
});
И мне дает ошибку что headers уже отправлены, хотя если после con.query() отправить response.json() то такой ошибки не будет. Пробовал return presets, но он тогда пишет undefined, просто не возвращаются. Если сделал console.log() то значения есть в presets, но как их юзеру отправить??
Я бы вынес работу с базой данных в отдельную функцию (а в идеале в отдельный модуль).
Как то так
const doQuery = callback => {
const connection = require('mysql').createConnection({
host: conf.get('db').connection,
user: conf.get('db').user,
password: conf.get('db').pass,
database: conf.get('db').database
});
const presets = [];
connection.connect();
connection.query('SELECT * FROM `clothing`', (err, results, fields) => {
if (err) return callback(err, null);
results.forEach((v, i) => {
presets.push({
'name': v.name,
'torso': [v.torso_draw, v.torso_tex],
'legs': [v.legs_draw, v.legs_tex],
'foot': [v.foot_draw, v.foot_tex],
'torso_acc': [v.torso_acc_draw, v.torso_acc_tex],
'hands': [v.hands_draw, v.hands_tex],
'helmet': [v.helmet_draw, v.helmet_tex],
'mask': [v.mask_draw, v.mask_tex]
});
});
connection.end();
callback(null, presets);
});
};
// вызов в app (в промышленном использовании следует добавить обработку ошибок)
doQuery((err, result) => response.json(presets));
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости