Причина, по которой вы получаете повторяющиеся результаты, заключается в том, что вы не делаете str = null
после отправки результата. вы объединяете str
для каждого запроса, потому что str
является глобальной переменной. ваш код может быть изменен для производительности, как это.
var express = require('express')
var app = express()
var MongoClient = require('mongodb').MongoClient
var url = 'mongodb://localhost:27017'
var str = ''
var db = null
MongoClient.connect(url, { useNewUrlParser: true }, function(err, client) {
if( err ) {
throw new Error( err );
}
db = client.db('EmployeeDB') // we are storing db reference in global variable db
});
app.route('/Employeeid').get(function(req, res) {
db.collection('Employee').find().toArray( function(err, cursor){
if( err ) {
res.send('');
throw new Error(err );
}
cursor.forEach(function(item) {
if (item != null) {
str = str + ' Employee id  ' +
item.Employeeid + '</br>'
}
}
res.send(str)
str = '';
})
})
})
var server = app.listen(3000, function() {})
Если вы не переместите res.send()
в функцию обратного вызова, вы можете отправить результат до получения данных из БД из-за асинхронной природы узла.