Выполнять функцию перед каждым запросом к MongoDB - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь соединить 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;
}

Пожалуйста, скажите мне, как я могу добиться того же поведения.

...