Есть код который подключается к базе и берет из нее выборку и он как бы отрабатывает, но в переменной allNews, вместо данных бывает undefined.
Так понимаю проблема в collection.each((err, item){}), тк он ведет себя как то асинхронно (сначала выводится "Цикл отработал", а потом "работа в цикле")
Если есть другие варианты (более простые) как можно сделать синхронный запрос, буду рад почитать.
Если будет нужна какая-либо еще информация касаемо вопроса, дам.
P.S. Первый проект на Mongo, не серчайте :P
// Подключаемся к БД и берем выборку
let connectDB = async() => {
let queryProm = new Promise((resolve, reject) => {
let allNews = [];
client.connect(err => {
assert.equal(null, err);
let db = client.db(dbName);
let collection = db.collection("news").find({title: {$exists: true}}, {_id: 0});
collection.each((err, item) => {
if (item !== null) {
console.log("Работа в цикле");
allNews.push(item);
};
});
console.log("Цикл отработал");
resolve(allNews);
client.close();
});
});
return (await queryProm);
}
// После получения выборки что-нибудь делаем
connectDB().then((data) => {
console.log( data );
});
Заменил метод each на forEach (ссылка на док. ниже).
https://docs.mongodb.com/manual/reference/method/cursor.forEach/#example
На вход этого метода передаются 2 функции:
Пример:
collection.forEach((item) => {
console.log(`Элемент цикла: ${item}`);
}, (end) => {
console.log(`
Цикл кончился (${end}) \n
Сюда мы и передаем success() \n
для синхронного выполнения функции
`);
});
collection - коллекция из базы, в моем случае news
let collection = db.collection("news").find({title: {$exists: true}}, {_id: 0});
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Задача: собираю данные геодаты с сервера (не моего)Для этого формирую запрос для определенного промежутка координат и в цикле for отправляю...
В разработке сайта, начинающийНе могу подцепить javascript к шаблону сайта
Разместил вот здесь всю реализациюВ каком направлении думать, чтобы реализовать раскрытие нового блока как-бы из квадрата, который расположен...