Пустой ответ mysql, вложенные запросы

287
06 сентября 2017, 13:35

Подключение к бд:

var config = require('config');
var mysql = require('mysql');
var connection;
function conn_db(){
    connection = mysql.createConnection(config.get('mysql'));
    connection.on('error', function(e) {
        if(e) console.error('Ошибка БД: '+e.code);
    });
    connection.connect(function(e){
        if(e) console.error('Ошибка подключения к БД: '+e.code);
    });
}
function sql(sql,callback){
    conn_db();
    connection.query(sql, function(err, rows) {
        if(err) console.error('Ошибка выполнения запроса к БД: '+err.code);
        callback(err, rows);
    });
    connection.end();
}
exports.db = sql;

Модель:

var db = require('../models/mysqlDriver').db;
exports.getAll = function(name,cb) {
    var result = {};
    db("SELECT * FROM hub_list WHERE hub_list.hub_link = '" + name + "' LIMIT 1", function(err, rows){
        if (err) {
            console.log(err);
            return;
        }
        else if(!rows.length){
            return;
        }
        else if(rows.length){
            // console.log(rows);
            result.hub = rows;
            db("SELECT * FROM hub_posts,users WHERE hub_posts.post_hub_id = '" + rows[0].hub_id + "' AND users.user_id = hub_posts.post_author_id ORDER BY hub_posts.post_date_create DESC LIMIT 12", function(err, posts){
                if (err) {
                    console.log(err);
                    return;
                }
                // console.log(posts);
                result.posts = posts;
                cb(err, result);
            });
        }
    });
};

Контроллер:

var modelHub = require('../models/hub');
exports.getAll = function(req, res) {
    modelHub.getAll(req.params.link, function(err, rows) {
        if (err) {
            console.log(err);
            return res.status(500);
        }
        // console.log(rows);
        res.render('hub', {
            title: 'Хабы',
            data: rows
        });
    });
};

Роутер:

module.exports = function (app) {
    app.get('/', require('./main').get);
    app.get('/hubs', require('./hubs').getAll);
    app.get('/hub/:link', require('./hub').getAll);
};

Вопросы:

  1. Если в модель в первый запрос приходит строка "test1"(база возвращает 0 строк) то браузер зависает и говорит что данные не были переданы. Если приходит строка "test"(база возвращает 1 строку) то нормально все грузится в шаблон и загружается страница.

  2. Если в модель в первый запрос приходит "test"(база возвращает 1 строку), и есть результаты со второй таблицы, то нормально их выдает. Если в модель в первый запрос приходит "test2"(база возвращает 1 строку), и во второй таблице результатов нет(нет постов) то выдает ошибку: hub_id undefined

Как лучше все это исправить?

READ ALSO
Метод format с одним аргументом у класса SimpleDateFormat

Метод format с одним аргументом у класса SimpleDateFormat

В документации к SimpleDateFormatformat указывается, что метод принимает три параметра:

227
Вывод файлов из архива

Вывод файлов из архива

Пытаюсь вывести имена файлов содержащихся в архиве, но выдаёт такую ошибку Exception in thread "main" javalang

278
Универсальный unwrapper для gson

Универсальный unwrapper для gson

Суть проблемы: сервер перешёл на новое апи и теперь каждый объект wrap'ит (оборачивает) в структуру

275
Чтение файлов из разных потоков

Чтение файлов из разных потоков

Есть Selenium, Chrome DriverЕсть прокси через которое я подключаюсь

311