Solution
Vous pouvez appeler le toObject
méthode pour accéder aux champs. Par exemple :
var itemObject = item.toObject();
console.log(itemObject.title); // "foo"
Pourquoi
Comme vous le soulignez, les vrais champs sont stockés dans le _doc
champ du document .
Mais pourquoi console.log(item)
=> { title: "foo", content: "bar" }
?
À partir du code source de mongoose (document.js), nous pouvons constater que le toString
méthode de Document
appeler le toObject
méthode. Donc console.log
affichera les champs "correctement". Le code source est affiché ci-dessous :
var inspect = require('util').inspect;
...
/**
* Helper for console.log
*
* @api public
*/
Document.prototype.inspect = function(options) {
var isPOJO = options &&
utils.getFunctionName(options.constructor) === 'Object';
var opts;
if (isPOJO) {
opts = options;
} else if (this.schema.options.toObject) {
opts = clone(this.schema.options.toObject);
} else {
opts = {};
}
opts.minimize = false;
opts.retainKeyOrder = true;
return this.toObject(opts);
};
/**
* Helper for console.log
*
* @api public
* @method toString
*/
Document.prototype.toString = function() {
return inspect(this.inspect());
};