Я хочу получить ответ от функции обратного вызова базы данных в виде массива, а не отдельных объектов.Проблема в том, что при текущей настройке Express выдает ошибку «Заголовки уже установлены».
Я думаю, что проблема заключается в функции обратного вызова базы данных:
Файл: database_connection.js
exports.connection = {
query: function () {
var queryArgs = Array.prototype.slice.call(arguments),
events = [],
eventNameIndex = {};
pool.getConnection(function (err, conn) {
if (err) {
if (eventNameIndex.error) {
eventNameIndex.error();
}
}
if (conn) {
var q = conn.query.apply(conn, queryArgs);
q.on('end', function () {
conn.release();
});
console.log(events);
events.forEach(function (args) {
q.on.apply(q, args);
});
}
});
return {
on: function (eventName, callback) {
events.push(Array.prototype.slice.call(arguments));
eventNameIndex[eventName] = callback;
return this;
}
};
}};
Я использую это так:
Файл: database_operations.js
exports.streepjes = function(){
return {
getByUserID: function(userid, callback_streepjes){
sqlSelect = sqlQuery.select();
//QUERY:
let command = sqlSelect.from('steepjes').select('*').where({USERID: userid}).build();
database.connection.query(command).on('result', function(result){
console.log("ANOTHER ONE");
console.log(result);
return callback_streepjes(result);
}).on('error', function(err){
console.error(err);
});
}
}
};
И я использую эти функции в функции экспресс-маршрутизатора:
router.get('/getStrepenByUserID', function(req, res) {
database_operations.streepjes().getByUserID(req.query.userid, function(response){
res.json(response);
});
});
Проблема этого подхода заключается в том, что функция обратного вызова в маршруте вызывается несколько раз,Это создает заголовок уже установленной ошибки.
Определенный вопрос:
Я хочу изменить функцию подключения к базе данных таким образом, чтобы она возвращала все свои выходные данные в одномстрока, вместо вызова функции обратного вызова для каждой записи базы данных.Но я просто не могу понять, как это сделать.Может быть, кто-то может дать подсказку о том, как решить эту проблему?
Заранее спасибо!
Редактировать:
Я использую MySQL и функции делаютработает правильно, когда вы получаете только один элемент, он падает, когда отвечает несколькими строками пакетов
Предварительный ответ:
См. мой ответ