MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Полетата за резултати от Mongoose/MongoDB изглеждат недефинирани в Javascript

Решение

Можете да извикате toObject метод за достъп до полетата. Например:

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

Защо

Както посочвате, че реалните полета се съхраняват в _doc поле на документа .

Но защо console.log(item) => { title: "foo", content: "bar" } ?

От изходния код на mongoose(document.js) можем да открием, че toString метод на Document извикайте toObject метод. Така че console.log ще покаже полетата "правилно". Изходният код е показан по-долу:

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. Условно групиране с $ съществува вътре в $cond

  2. Как да добавя данни към масив в Mongoose Schema

  3. Mongo – Игнорирайте собствеността, за да не бъде запазена

  4. Rails + MongoMapper + EmbeddedDocument помощ за формуляра

  5. Как да променя името на колекцията в mongoose.model?