gpt4 book ai didi

node.js - 从 sequelize 钩子(Hook)返回不同的结果

转载 作者:行者123 更新时间:2023-12-03 22:29:14 26 4
gpt4 key购买 nike

我试图整理我的缓存是如何工作的,因此想将它实现到我的模型的钩子(Hook)中。这是我迄今为止实现的,我可以看到它正在正确设置和获取缓存。

hooks: {
beforeFind: function(opts,fn) {
cache.get(this.getTableName() + ':' + opts.where.id, function(err, result) {
if (result) {
return fn(null, result);
}

return fn(null, opts);
});
},
afterFind: function(result, options, fn) {
cache.set(this.getTableName() + ':' + result.getDataValue('id'), result, function () {
return fn(null, result);
});
},
}

问题是,缓存命中后,它仍在执行数据库查询并从数据库返回结果。

有人可以告诉我如何从缓存中返回结果而不是在缓存命中的情况下执行数据库查询吗?

最佳答案

我们看一下代码findAll (因为它要求所有的发现)。您可以看到,它将返回 Promise,首先执行钩子(Hook),然后在 block 中进行查询。这就是为什么您不能以这种方式实现缓存的原因。这个issue有热议关于 sequelize 需要如何实现插件系统(尤其是缓存)。

你能知道什么?看看这个lib ,其中缓存对象是在模型上实现的。

关于node.js - 从 sequelize 钩子(Hook)返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30127024/

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