build立一个集合caching是一个好习惯吗?

我正在用MongoDB和Node.js一起使用插件node-mongodb-native 。 我遇到的一个问题是嵌套callback的数量。 我试图通过减less查询所需的代码来简化一些事情。

而不是这个…

 db.collection("test", function(err, collection) { collection.find(...).toArray(function(err, results) { // ... }); }); 

…我正在考虑构build一个充当caching集合的对象,这样第一个callback就没有必要了。 我使用下面的代码来构build对象:

 var collections = {}; ["test", "foo"].forEach(function(name) { db.collection(name, function(err, coll) { collections[name] = coll; }); }); 

有了它,我可以清理第一个代码片段:

 collections.test.find(...).toArray(function(err, results) { // ... }); 

我想知道这是否是一个好的做法。 它工作得很好,但我想获得一个集合的callback是有原因的。 像我现在所做的那样构build集合caching是否有意义?

这完全取决于一个集合对象是什么。 – 它活着吗? – 它连接到数据库? – 它做任何内部caching? – 它反映了新的数据吗?

不知道这些细节,我build议你创build一个懒惰的评估代理。

 Mongo.collection("test").find(...).toArray(function(err, results) { // ... }); 

这里的想法是,你在内部存储find命令,当你调用toArray时,你得到集合并调用find命令,然后调用toArray。

这意味着你每次获得一个新的集合,避免“caching安全”的问题,但仍然有一个不错的API。