MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Pola wynikowe Mongoose/MongoDB są wyświetlane jako niezdefiniowane w JavaScript

Rozwiązanie

Możesz wywołać toObject metody w celu uzyskania dostępu do pól. Na przykład:

var itemObject = item.toObject();
console.log(itemObject.title); // "foo"

Dlaczego

Jak wskazujesz, że prawdziwe pola są przechowywane w _doc pole dokumentu .

Ale dlaczego console.log(item) => { title: "foo", content: "bar" } ?

Z kodu źródłowego mongoose(document.js) możemy dowiedzieć się, że toString metoda Document wywołaj toObject metoda. Więc console.log pokaże pola 'poprawnie'. Kod źródłowy jest pokazany poniżej:

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());
};


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. ScaleGrid ogłasza współdzielony hosting MongoDB na Amazon AWS

  2. Grupuj według sumy mongodb

  3. Zwróć wyniki mangusty w zapytaniu wyszukiwania do zmiennej

  4. MongoDB:Jak znaleźć dokument według identyfikatora w zagnieżdżonym dokumencie

  5. MongoDB $sqrt