Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';t从MongoDB获取的数据访问JSON值_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript Can';t从MongoDB获取的数据访问JSON值

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')

早上好,我有一件最奇怪的事。我希望有人能帮我

我从MongoDB获取数据(通过Mongoose)非常简单的结果

   {
      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!!正是无模式的实现使它成功了。如果我只加入一个模式,它会给我预期的结果。仍在想为什么,但这给了我一些工作。:)你能提出你的意见作为回答吗?然后我可以投赞成票。