Как вивести запрос к бд на страницу?

Хочу вивести результат запроса в выпадающий список (select - option).

Вот model:
let db = require('../db');

exports.getAll = function(callback) {
db.get().collection('regions').find({
value: {
$ne: 0
}
}).toArray(function(error, docs) {
callback(error, docs);
});
};

Вот controller:
let regionsModel = require('../models/regions');

exports.getAll = function(request, response) {
regionsModel.getAll(function(error, docs) {
if (error) {
console.log(error);

return response.sendStatus(500);
}

response.send(docs);
});
};

Вот роутинг:
app.get('/', function(request, response) {
response.render('pages/index', {regions: regionsController.getAll});
});

Но, на страницу виводить такое - function (request, response) { regionsModel.getAll(function(error, docs) { if (error) { console.log(error); return response.sendStatus(500); } response.send(docs); }); } - отривок из controller.

Помогите пожалуйста. Спасибо
  • Вопрос задан
  • 520 просмотров
Решения вопроса 1
boratsagdiev
@boratsagdiev
app.get('/', function(request, response) {
    response.render('pages/index', { regions: regionsController.getAll() });
});


Но учитывая что там в контроллере асинхронное получение данных из БД, то скорее всего ничего не выйдет и так. Сначала нужно получить данные из regionsController.getAll(), а потом уже внутри при полученных данных вызвать res.render.

Или просто вынести response.render() в контроллер и его из роута вызывать.

let regionsModel = require('../models/regions');

exports.getAll = function(request, response) {
regionsModel.getAll(function(error, docs) {
    if (error) {
        console.log(error);
        return response.sendStatus(500);
}

    response.render('pages/index', { regions: docs });
});
};


const controller = require('./controller');

app.get('/', function(request, response) {
    controller.getAll(request, response);
});


Как-то так вроде.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы