gpt4 book ai didi

caching - 构建集合缓存是一个好习惯吗?

转载 作者:太空宇宙 更新时间:2023-11-03 23:46:58 24 4
gpt4 key购买 nike

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

而不是这个...

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

...我正在考虑构建一个充当集合缓存的对象,以便不需要第一个回调。我使用以下代码来构建对象:

var collections = {};

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

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

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

我想知道这是否是一个好的做法。它工作得很好,但我想获取集合的回调是有原因的。像我现在所做的那样构建集合缓存有意义吗?

最佳答案

这完全取决于集合对象是什么。 - 是直播吗? - 是否连接到数据库? - 它有内部缓存吗? - 它反射(reflect)了新数据吗?

在不知道这些详细信息的情况下,我建议您创建一个惰性评估代理。

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

这里的想法是,您在内部存储 find 命令,当您调用 toArray 时,您将获取集合并对其调用 find 命令,然后调用 toArray。

这意味着您每次都会获得一个新的集合,并避免“缓存安全”问题,但仍然拥有一个很好的 API。

关于caching - 构建集合缓存是一个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8344500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com