[英]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.