Menu
CoddyTech

Оставить первые результаты

Часть раздела Базы данных с 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, если оно отсутствует. Этот способ принимает положительные целые числа.

challenge icon

Задание

Легко

Сохрани заданную сортировку от самых новых к самым старым. Ограничь результаты, используя 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