Использование метода 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 метод вызывается. В частности, у меня есть следующие вопросы:

  1. Какие объекты передаются function(e, docs) как его аргументы?

  2. Является function(e, docs) часть синтаксиса MongoDB? Я просмотрел документы по операциям Mongo CRUD и не смог найти на них ссылку. И это похоже на стандартный синтаксис для монго .find операция collection.find({},{}).someCursorLimit(), Я не видел ссылку на третий параметр в .find операция, так почему же здесь разрешено?

  3. Если function(e, docs) это не операция MongoDB, это часть Monk API?

  4. Из руководства видно, что этот блок кода возвращает все документы в коллекции и помещает их в объект в качестве атрибута под названием "бренды". Тем не менее, какую роль конкретно делает 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 документов.

Все это дается в документах. Я думаю, что лучше использовать мангуст вместо родного драйвера из-за особенностей и популярности.

Другие вопросы по тегам