Javascript Can';t从MongoDB获取的数据访问JSON值
早上好,我有一件最奇怪的事。我希望有人能帮我 我从MongoDB获取数据(通过Mongoose)非常简单的结果Javascript Can';t从MongoDB获取的数据访问JSON值,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,早上好,我有一件最奇怪的事。我希望有人能帮我 我从MongoDB获取数据(通过Mongoose)非常简单的结果 { reqts: 1469468008496 } 我正在尝试访问属性requts但它尚未定义。但是上面的结果很清楚它的存在 我现在做的是 // This gives me the above result, but doing data.reqts gives me nothing. Couple.findOne().sort('-reqts')
{
reqts: 1469468008496
}
我正在尝试访问属性requts
但它尚未定义。但是上面的结果很清楚它的存在
我现在做的是
// 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
更新:
这似乎可以解释这一点:正如您所说,您忘记了定义scheme。所以下一个代码正在工作
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);
});
}
});
但我必须说,有办法解决这个问题。您可以使用数据访问模型中未定义的字段。\u 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);
});
我认为未定义字段隐藏可以简化将文档直接发送到输出的过程,而无需额外选择所需字段。为什么只需要对一个数据进行排序?我们可以看到您使用的是
findOne()
。这将为我提供具有最高请求值的记录。不是吗?问题仍然存在。为什么我不能访问data.reqts?可能是因为item.reqts
不是JSON对象。你能试试响应。发送(数据)
吗?我肯定你的其他代码有问题。我在中使用了您的示例代码,它按预期工作-打印数字。这适用于Roman.R!!正是无模式的实现使它成功了。如果我只加入一个模式,它会给我预期的结果。仍在想为什么,但这给了我一些工作。:)你能提出你的意见作为回答吗?然后我可以投赞成票。