J'ai une application utilisant nodejs et mongodb. J'ai utilisé la mangouste pour ODM. Maintenant, je veux enregistrer toutes les requêtes de cette mangouste au cours de l’application.
Comment se connecter?
Vous pouvez activer le mode débogage comme suit:
mongoose.set('debug', true);
ou ajoutez votre propre rappel de débogage:
mongoose.set('debug', function (coll, method, query, doc [, options]) {
//do your thing
});
Cela enregistrera toutes les méthodes de collecte exécutées et leurs arguments dans la console.
J'utilise le noeud Bunyan, c'est une option pour déboguer et suivre les requêtes (peut aider quelqu'un d'autre)
function serializer(data) {
let query = JSON.stringify(data.query);
let options = JSON.stringify(data.options || {});
return `db.${data.coll}.${data.method}(${query}, ${options});`;
}
let log = bunyan.createLogger({
name: 'AppName',
src: false,
serializers: {
// ...
dbQuery: querySerializer
// ...
},
// ...
});
mongoose.set('debug', function(coll, method, query, doc, options) {
let set = {
coll: coll,
method: method,
query: query,
doc: doc,
options: options
};
log.info({
dbQuery: set
});
});
Vous pouvez également définir les paramètres du journal de débogage:
node index.js DEBUG=mquery
mais cela ne fera que consigner requêtes , et non insérer ou mettre à jour des instructions.
Vous pouvez utiliser le format suivant:
mongoose.set("debug", (collectionName, method, query, doc) => {
console.log(`${collectionName}.${method}`, JSON.stringify(query), doc);
});
ou tout autre enregistreur de votre choix:
mongoose.set("debug", (collectionName, method, query, doc) => {
logger(`${collectionName}.${method}`, JSON.stringify(query), doc);
});