懒人的小聪明:mount-collections
发布于 3年前 作者 xiongliding 3103 次浏览

这里要介绍的是一个用于 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》 一文的结尾进行了验证。

3 回复

不如直接用mongoskin~~

恩同意,真的不如直接mongoskin,可以有一些简单的业务逻辑。

呃,其实这个东西和 mongoskin 完全不存在竞争关系,出发点也不一样。

如果要比较的话应该就是和 mongoskin 的 bind 在某些方面有些类似,bind 的强大之处在于可以绑定自定义的方法,而这个模块的主要功能是自动挂载数据集或者一次挂载多个数据集,在某些时候偷个懒而已。

而且,如果愿意的话,mountCollecitons 的第一个参数也可以是 mongoskin 的 db 实例。

回到顶部