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。