node.js - 如何取消 'pre' 钩子(Hook)中的 Mongoose 查询

标签 node.js mongodb mongoose

我正在为我在特定模式上的“查找”查询实现某种缓存,并且我的缓存与前\后查询 Hook 一起工作。

问题是如何正确取消“查找”查询?

mySchema.pre('find', function(next){
    var result = cache.Get();

    if(result){
       //cancel query if we have a result from cache
       abort();
    } else {
       next();
    } 
});

为了实现这个 promise ?

Model.find({..})
        .select('...')
        .then(function (result) {
            //We can reach here and work with the cached results
        });

最佳答案

由于另一个非缓存原因,我自己无法找到合理的解决方案,但如果您自己的特定缓存方法不是太重要,我建议您查看 mongoose-cache , 运行良好并且由于它的依赖性而具有简单的设置:node-lru-cache ,查看更多选项。

关于node.js - 如何取消 'pre' 钩子(Hook)中的 Mongoose 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31671024/

相关文章:

node.js - 我的 npm 已损坏 - 无法读取未定义的属性 'get'

node.js - 如何在NodeJS中发送错误并通过async/await在前端接收错误?

mongodb - 在 mongodb 中加入类似查询

javascript - 在多个路由之间共享数据库连接?

mysql - 从多对多关系中选择 Sequelize

node.js - 在多个集合中搜索 mongoose

Javascript .find() 如何查找并返回所有用户名?

mongodb - 删除无法访问的 Mongo 分片

javascript - 在 Mongoose 中查询变量

node.js - 为什么 sequelize 在我进行查询时尝试选择一个额外的列