这里要介绍的是一个用于 Mongodb(node-mongodb-native) 的辅助模块,用来帮你少打几个字,比如把 db.collection('demo')
简化成 db.demo
。顺便提高一丁点执行效率。
这个模块只有一个函数,使用方法也很简单:
db.open(function(err, db) {
// 这里需要使用 db.collection('demo') 的形式
var mountCollections = requrie('mount-collections');
mountCollections(db, function(err, db) {
// 这里可以使用 db.demo 的形式引用任何一个数据库中已经存在的数据集
});
});
另一种用法是:
mountCollections(db, ['demo', 'system.indexes'], function(err, db) {
// 这里可以使用 db.demo 和 db.system.indexes ,就算数据库中还没有这个数据集也行
});
这么做带来的一个额外的效益就是不用重复的调用 collection 方法实例化数据集对象,带来一点微不足道的性能提升。
另外还要提醒的一点是回调函数中的 db 已经不是原来的 db,为了避免数据集的名称和 db 原有的方法或属性重名导致覆盖和混淆,这里的 db 是一个简单的挂载了数据集实例的全新对象。如果你想继续使用原来的 db 对象,可以给回调函数中的取一个别的名字。
关于这么做的可靠性——当然是可靠的——在 《以贴近原生的形式在 Node 中操作 Mongodb》 一文的结尾进行了验证。
不如直接用mongoskin~~
呃,其实这个东西和 mongoskin 完全不存在竞争关系,出发点也不一样。
如果要比较的话应该就是和 mongoskin 的 bind 在某些方面有些类似,bind 的强大之处在于可以绑定自定义的方法,而这个模块的主要功能是自动挂载数据集或者一次挂载多个数据集,在某些时候偷个懒而已。
而且,如果愿意的话,mountCollecitons 的第一个参数也可以是 mongoskin 的 db 实例。