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. 春のウェブフラックスと春のデータリアクティブにページネーションを実装する方法はありますか

    2. MongoDBでコレクションをコピー/クローン化する

    3. Luaで32ビットビット演算を使用して符号付き64ビット数を比較する

    4. 外部フィールドがオブジェクトの配列である場合のMongoDBルックアップ