Я пытаюсь сохранить данные MongoDB в переменной и использовать их для отображения в HTML с использованием hbs. Я получаю ошибку: TypeError: Невозможно прочитать свойство 'collection' из неопределенного . Вот код, который я написал:
evar express = require('express');
var bodyParser = require('body-parser');
var mongoDB = require('mongodb').MongoClient;
var hbs = require('hbs');
var app = express();
app.use(express.static(__dirname +'/public'));
app.use( bodyParser.urlencoded());
var url = 'mongodb://localhost:27017';
var db;
mongoDB.connect(url, {useUnifiedTopology: true, useNewUrlParser: true }, function(error, client){
if(error)
throw error;
db = client.db('attainu');
});
app.post('/addstudent/add', function(req, res){
db.collection('students').insertOne(req.body, function(error, result){
if(error)
throw error;
res.json(result);
console.log("New student Successfully Added!");
})
})
var students = db.collection('students').find({}).toArray();
app.get('/allstudents', function(req, res){
res.render('students.hbs', {
student: students
});
})
app.listen(3000);
в файле HTML:
<body>
{{#each student}}
<div class="card" style="width: 18rem;">
<div class="card-body">
<h5 class="card-title">this.name</h5>
<p class="card-text">this.email + this.age</p>
<a href="#" class="btn btn-primary">this.number</a>
</div>
</div>
{{/each}}
</body>
Я думаю, это потому, что JS является асинхронным языком. Было бы полезно, если бы кто-нибудь мог помочь мне сделать этот асинхронный код.