2016-07-26 19 views
0

Goodmorning、私は奇妙なことがあります。誰かが私にこれを手伝ってくれることを願っているMongoDBからフェッチされたデータからJSON値にアクセスできません。

私はプロパティreqtsにアクセスしようとしていますそれはしかし、未定義だ

{ 
     reqts: 1469468008496 
    } 

非常にシンプルな結果(マングース経由)にMongoDBからデータをフェッチしています。しかし、上記の結果は、その存在について非常に明確です。私がやっている何

これは私が前に述べたオブジェクトを与え、次の

// This gives me the above result, but doing data.reqts gives me nothing. 
    Couple.findOne().sort('-reqts').select('reqts -_id').exec(function(err, item) { 
     var data = item 
     response.json(data) 
    }); 

です。私がしている場合:

var data = item.reqts 

私は何も返されません(応答は空です)。

誰かがこれを手伝ってくれることを願っています。 ありがとう!


更新日: 私は現在コンソールにも書き出し中です。

Couple.findOne().sort('-reqts').select('reqts -_id').exec(function(err, data) { 
     if (err) { response.status(500).json({error: err}) } 
     else { 
      console.log(typeof data) 
      console.log(data) 
      console.log(data.reqts) 
      response.json(data)} 
    }); 

これはコンソールに書き込むものです。

object 
{ reqts: 1469468008496 } 
undefined 

更新日:

これは、それを説明するようだ:Dot operator not fetching child properties of a Mongoose Document object

+0

なぜ1つのデータのみをソートする必要があるのですか? 'findOne()'を使っているのが分かります。 –

+0

これは最高のreqts値を持つレコードを私に与えます。それはありませんか?まだ質問は残ります。なぜdata.reqtsにアクセスできないのですか? – Marco

+0

おそらく 'item.reqts'はJSONオブジェクトではないからです。あなたは 'response.send(data)'を試すことができますか? –

答えて

1

をさてあなたはすでに言ったように - あなたはスキームを定義するのを忘れました。だから、次のコードは、

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://127.0.0.1:27017/so'); 

var Couple = mongoose.model('Couple', { reqts: Number }); 

var couple = new Couple({ reqts: 1469468008496 }); 
couple.save(function (err) { 
    if (err) { 
     console.log(err); 
    } else { 
     Couple.findOne().sort('-reqts').select('reqts -_id').exec(function(err, data) { 
      console.log(data.reqts); 
     }); 
    } 
}); 

を働いているしかし、私はこの問題を回避する方法があると言わなければなりません。あなたも仕事とdata._docので、次のコードをモデルにundefiniedフィールドにアクセスすることができます。

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://127.0.0.1:27017/so'); 
var treet = require('treet'); 

var Couple = mongoose.model('Couple', {ts: Number}); // no reqts, we even can use {} 

Couple.findOne().sort('-reqts').select('reqts -_id').exec(function(err, data) { 
    console.log(data._doc.reqts); 
}); 

私は未定義のフィールドは必須フィールドの追加選択せずに右の出力に文書を送信簡単にするために行われる隠しだと思います。

関連する問題