Я пытаюсь соединить redis с mongodb-native в приложении express. В моих маршрутах у меня есть такие запросы:
db.collection(collName).findOne({ _id: ObjectId(...) });
Я хочу перехватить каждый запрос перед его отправкой в MongoDB . И запустите функцию, чтобы проверить, находятся ли необходимые данные в кеше redis, прежде чем запрашивать MongoDB.
Я попытался прочитать код библиотеки mongodb-native и безуспешно связался с прототипами Collection.
Длинный рассказ: это поведение с родным mongodb вместо пн goose:
https://github.com/Automattic/mongoose/blob/d620c4b39452dd3f4a83698a1cfe5e27bc12085d/examples/redis-todo/services/cache.js
пн goose имеет эту exe c функцию, которая выдается при каждом запросе:
const exec = mongoose.Query.prototype.exec;
mongoose.Query.prototype.exec = async function() {
// data in the cache ? true => return the data from the cache
const result = await exec.apply(this, arguments);
// cache the result for future call
return result;
}
Пожалуйста, скажите мне, как я могу добиться того же поведения.