Как сделать синхронный запрос к базе MongoDB?
Есть код который подключается к базе и берет из нее выборку и он как бы отрабатывает, но в переменной 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 );
});
Результат которого импортируется в главный файл сервера (сервер на express) https://github.com/DarkKeksik/bootstrap-learn/blob/master/index.js
В текущем решении данные с сервера запрашиваются 1 раз после запуска сервера, мне нужно сделать так, чтобы каждый раз как пользователь запрашивает страницу из БД брались данные и выводились, поэтому и хочу сделать синхронный запрос к базе, мол пока данные не запросятся, страница не будет отдана.
– Frog Frogov Dec 06 '19 at 00:11Возможно как то не так передаю суть вопроса, в любом случае спасибо за попытку ответить.
– Frog Frogov Dec 06 '19 at 07:05