Использование метода find в коллекции MongoDB с Monk
Я работаю через учебник MEAN стека. Он содержит следующий код в качестве маршрута в index.js
, Название моей монго коллекции brandcollection
,
/* GET Brand Complaints page. */
router.get('/brands', function(req, res) {
var db = req.db;
var collection = db.get('brandcollection');
collection.find({},{},function(e,docs){
res.render('brands', {
"brands" : docs
});
});
});
Я хотел бы изменить этот код, но я не совсем понимаю, как .find
метод вызывается. В частности, у меня есть следующие вопросы:
Какие объекты передаются
function(e, docs)
как его аргументы?Является
function(e, docs)
часть синтаксиса MongoDB? Я просмотрел документы по операциям Mongo CRUD и не смог найти на них ссылку. И это похоже на стандартный синтаксис для монго.find
операцияcollection.find({},{}).someCursorLimit()
, Я не видел ссылку на третий параметр в.find
операция, так почему же здесь разрешено?Если
function(e, docs)
это не операция MongoDB, это часть Monk API?Из руководства видно, что этот блок кода возвращает все документы в коллекции и помещает их в объект в качестве атрибута под названием "бренды". Тем не менее, какую роль конкретно делает
function(e, docs)
играть в этом процессе?
Любое разъяснение будет высоко ценится!
1 ответ
Первый параметр - это запрос.
Вторым параметром (который является необязательным) является проекция, т.е. если вы хотите ограничить содержимое сопоставляемых документов
collection.find( { qty: { $gt: 25 } }, { item: 1, qty: 1 },function(e,docs){})
будет означать, чтобы получить только item
а также qty
поля в сопоставленных документах
Третий параметр - это функция обратного вызова, которая вызывается после завершения запроса. function(e, docs)
является драйвером mongodb для синтаксиса node.js 1-й параметр e
это ошибка. docs
это массив совпавших документов. Если возникает ошибка, она указывается в e
, Если запрос выполнен успешно, соответствующие документы выдаются во втором параметре. docs
(имя может быть чем угодно).
У курсора есть различные методы, которые можно использовать для манипулирования совпадающими документами до того, как mongoDB вернет их. collection.find( { qty: { $gt: 25 } }, { item: 1, qty: 1 }) - курсор, с которым можно выполнять различные операции.
collection.find( { qty: { $gt: 25 } }, { item: 1, qty: 1 }).skip(10).limit(5).toArray(function(e,docs){
...
})
Это означает, что вы пропустите первые 10 подходящих документов, а затем вернете максимум 5 документов.
Все это дается в документах. Я думаю, что лучше использовать мангуст вместо родного драйвера из-за особенностей и популярности.