Оставить первые результаты
Часть раздела Базы данных с MongoDB путешествия по Node.js на Coddy. Урок 12 из 29.
Для страницы, показывающей две самые новые книги, нужны только первые два результата. Для этого у курсора есть метод limit. limit задаёт количество документов, а не значение поля.
await books.find().sort({year: 1}).limit(1).toArray();
// [Emma], самая старая книгаДля курсора find MongoDB выполняет сортировку перед ограничением, независимо от порядка вызова методов в цепочке. Сначала запишите sort, чтобы код читался в этом порядке. Даже если limit равен единице, возвращается массив. Если совпадений меньше, чем заданное ограничение, база данных возвращает доступные документы. Пустые заглушки не добавляются.
Значение запроса — это текст: Number(input.page) || 1 использует его числовое значение или 1, если оно отсутствует. Этот способ принимает положительные целые числа.
Задание
ЛегкоСохрани заданную сортировку от самых новых к самым старым. Ограничь результаты, используя input.n из строки запроса; если параметр отсутствует, используй 2. Возвращай документы без изменений.
Попробуй выполнить: GET /result?n=2 возвращает Kindred, затем Dune. С ?n=1 остаётся только Kindred. Если параметра n нет, по умолчанию возвращаются два результата. Входные значения — положительные целые числа.
Попробуйте сами
export async function exercise(books, input) {
return await books.find().sort({ year: -1 }).toArray();
}
Все уроки раздела Базы данных с MongoDB
Потренируйтесь самостоятельно: Песочница Express