Разница в результатах findOne и find?

Имеется такой запрос:
let query = User.findOne();

	query = query.or([
		{ username: incomingData.username},
		{ email: incomingData.email},
	]);

	query.projection("username email");

	const result = await query;


Если я использую find(), то я могу работать напрямую с result, не используя await query.then(result => {}). result будет пустым массивом, если ничего не найдено. Или массивом с найденными элементами. Следовательно, я могу написать далее if (result.length == 0)

Но в случае с findOne() работать с результатом поиска я могу только через await query.then(result => {})

Почему так?
  • Вопрос задан
  • 22 просмотра
Пригласить эксперта
Ответы на вопрос 1
iDmitriyWinX
@iDmitriyWinX
В чём концепция...?
find() в 100% случаев возвращает массив (Document[])
findOne в 100% случаев возвращает 1 элемент (Document)

Поэтому при использовании find мы обязаны проходится циклом если хотим работать с каждым найденным ответом в отдельности.

А у вас в вопросе всё наоборот.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы