Ситуация
У меня есть node.js сервер на express. С помощью socket.io хочу отправить данные из базы данных mongodb на клиент.
const socket = require('socket.io');
const io = socket(server);
//Запускаю сервер и подключаюсь к базе данных
//переменная "db" - база данных
io.on('connection', socket => {
console.info(Connected: ${socket.id});
socket.on('disconnect', () => {
console.info(Disconected: ${socket.id})
});
socket.on('search', data => {
// верхний уровень
var results = [];
db.collection('diseases').find({'ttl.txt': {$regex: data, $options: 'i'}}).forEach(document =>{
// нижний уровень
results.push(document.ttl[0].txt);
});
io.sockets.emit('search', results);
});
});
Проблема
На нижнем уровне хочу записать в переменную results, расположенную на верхнем уровне данные. Хотя на нижнем уровне переменная перезаписывается, на верхнем остается без изменений.
Вопрос
Подскажите пожалуйста как решить эту проблему. Эта проблема возникает у меня довольно часто, но всегда находил запасной план, но тут не смог. Заранее благодарю.
resultsна нижнем уровне в консоль - она покажет то что нужно, но вот на верхнем не переписывается. – Max Mikhalchuk Jul 19 '17 at 15:30