簡體   English   中英

無法從MongoDB提取的數據訪問JSON值

[英]Can't access JSON value from data fetched from MongoDB

早上好,我有最奇怪的事情。 我希望有人可以幫助我。

我正在從MongoDB中獲取數據(通過Mongoose)非常簡單的結果

   {
      reqts: 1469468008496
   }

我正在嘗試訪問屬性reqts ,但是它是未定義的。 但是上面的結果非常清楚它的存在。

我在做什么是以下

   // 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

更新:

這似乎可以解釋這一點: 點運算符未獲取Mongoose Document對象的子屬性

就像您已經說過的-您忘記了定義方案。 所以下一個代碼正在工作

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訪問模型中data._doc字段,因此下一個代碼也可以工作:

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

我認為隱藏未定義的字段是為了使向輸出發送文檔更加簡單,而無需額外選擇必填字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM