Есть ли способ использовать этот код или аналогичный код для поиска по имени пользователя вместо findById?
Router.route('/:id').get(function (req, res)
{
let id = req.params.id;
Books.findById(id, function (err, course) {
res.json(course);
});
});
Учитывая этот код, нет, это невозможно. Вы должны проверить, есть ли у объекта Books такой метод, как .findByUserName или аналогичный.
@GrafiCodeStudio Books — модель





Books.find({username: 'username'},function (err, course) {res.json(course);});
или
Books.find({username: /username/i},function (err, course) {res.json(course);}); // Like operator
надеюсь это работает Посмотрите на Документы мангуста здесь
Предупреждение: .find() вернет массив документов, даже если есть только один документ, соответствующий фильтрам.
Нет такой вещи, как найти по имени. Вместо этого вы можете использовать find или findOne.
Books.find({username: 'username',function (err, course) {
res.json(course);
});
Books.findOne({username: 'username',function (err, course) {
res.json(course);
});
С шаблоном регулярных выражений
Books.findOne({username: 'username'/gi,function (err, course) {
res.json(course);
});
Предупреждение: .find() вернет массив документов, даже если есть только один документ, соответствующий фильтрам.
@VirgilioGM, поэтому я также упомянул findOne
Ваш ответ, конечно, работает отлично, но ИМХО переменный курс предполагает, что он содержит один документ, и поэтому я счел уместным предупредить, если у ОП есть сомнения по этому поводу. Возможно, было бы более понятно, если бы переменная, возвращаемая функцией .find(), была курсами.
См. w3schools.com/nodejs/nodejs_mongodb_query.asp