我正在学习MEAN stack教程。它包含以下代码作为index.js
中的路由。我的Mongo集合的名称是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操作的文档,但找不到它的参考。Mongo.find
操作的标准语法似乎是collection.find({},{}).someCursorLimit()
。我没有在.find
操作中看到对第三个参数的引用,那么为什么这里允许一个呢?如果
function(e, docs)
不是MongoDB操作,它是Monk API的一部分吗?从教程中可以清楚地看到,这段代码返回集合中的所有文档,并将它们作为一个名为"brands"的属性放置在对象中。然而,
function(e, docs)
在这一过程中具体扮演了什么角色?
任何澄清将不胜感激!
第一个参数是查询。
第二个参数(可选)是投影,即如果您想限制匹配文档的内容
collection.find( { qty: { $gt: 25 } }, { item: 1, qty: 1 },function(e,docs){})
表示只获取匹配文档中的item
和qty
字段
第三个参数是在查询完成后调用的回调函数。function(e, docs)
是node.js语法的mongodb驱动程序。第一个参数e
是错误。docs
是匹配文档的数组。如果发生错误,则在e
中给出。如果查询成功,则在第二个参数docs
中给出匹配的文档(名称可以是您想要的任何名称)。
游标有各种方法,可用于在mongoDB返回匹配的文档之前操作它们。收集。查找({数量:{$gt: 25}},{项目:1,数量:1})是一个游标,您可以对其进行各种操作。
collection.find( { qty: { $gt: 25 } }, { item: 1, qty: 1 }).skip(10).limit(5).toArray(function(e,docs){
...
})
意味着您将跳过前10个匹配的文档,然后返回最多5个文档。
所有这些东西都在文档中给出。我认为最好使用mongoose而不是本地驱动程序,因为它的特性和受欢迎程度。