Почему async await возвращает undefined результатом запроса к базе?

Внизу описана функция, которая должна, была бы, найти пользователя в базе и вернуть его.
Если я верно понимаю, то MongoClient.connect возвращает null, но ведь если я в callback вернул пользователя, то смогу его получить в переменной resp?

В свою очередь, in function log возвращает мне null или пользователя, а resp выдает undefined.

Я что-то не верно сделал с async/await, или стоит вернуть пользователя иначе?
По сути, я должен проверить логин и пасс в этой функции, но она обязана что-то вернуть.
Подскажите пожалуйста, как верней проверить логин и пасс.

async function checkIfUserExists(user) {
	const resp = await MongoClient.connect(mongoUrl,
		{
			useNewUrlParser: true,
			useUnifiedTopology: true
		},
		async function(err, db) {
			if (err) throw err;

			let dbo = await db.db("todo");

			let user = await dbo.collection("users").findOne(user);

			console.log('in function log');
			console.log(user);

			return user;
	});

	console.log('resp');
	console.log(resp);

	return resp;
}
  • Вопрос задан
  • 233 просмотра
Решения вопроса 1
@grinat
Шо то херь какая-то, там колбэк для коннект нужен, если нет промисов. Давно не смотрел в их либу, но она возвращает промис если нет колбэка везде, насколько помню.
const db = await MongoClient.connect(mongoUrl)
let dbo = await db.db("todo");
 let user = await dbo.collection("users").findOne(user);
console.log(user);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы