Я попытался запустить ваш код, и сейчас есть несколько проблем. Прежде всего, вы пытаетесь обернуть все ваше экспресс-приложение в обратный вызов MongoClient.connect()
. Что вы хотите сделать, это, вероятно, подключиться к базе данных и инициализировать его в первую очередь. После инициализации вы сможете выполнять запросы в ваших маршрутах.
Вы можете сделать это, инициализируя переменную и затем назначая ей курсор.
var database;
MongoClient.connect("mongodb://localhost:27018/incidents_db", {
useNewUrlParser: true
},
(err, db) => {
if(err) throw err;
database = db;
});
Если вам нужны пояснения о том, как это сделать, вы можете проверить вопрос Как я могу подключиться к mongodb, используя экспресс без mongoose?
Затем вы можете обратиться к базе данных вашего роутера.
app.get("/", function(req, res){
database.collection("incidents").find((err, doc) =>{
if(err) throw err;
res.render("main.html", {'incidents': doc });
});
});
app.use(express.static('main'));
app.listen(8080);
Вы устанавливаете каталог представлений на static
, верно? У вас есть папка с main.html? Если нет, то ничего не будет отображено.
При вероятности сбоя монго-соединения вы можете попытаться напрямую передать объект в шаблон представления и увидеть, что значения отображаются так, как вы ожидаете.
app.get("/incident", function(req, res){
res.render("incident.html", {"incidents":[
{"description": "This is a example of report.",
"address": "5th Street",
"author": "Bob",
"date": "16/02/19"}]});
});