Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.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 获取从mongodb接收的对象的属性_Javascript_Jquery_Mongodb_Object - Fatal编程技术网

Javascript 获取从mongodb接收的对象的属性

Javascript 获取从mongodb接收的对象的属性,javascript,jquery,mongodb,object,Javascript,Jquery,Mongodb,Object,我的mongodb中有一个警报集合。。 我希望获得警报模型中存在的对象的属性,我已经编写了以下代码 Alert.find({},function(err,alerts){ if(err) console.log(err); console.log(alerts); alerts.forEach(function(result){ console.log(result.name); console.log(result._id

我的mongodb中有一个警报集合。。 我希望获得警报模型中存在的对象的属性,我已经编写了以下代码

Alert.find({},function(err,alerts){
    if(err)
        console.log(err);
    console.log(alerts);
    alerts.forEach(function(result){
        console.log(result.name);
        console.log(result._id);
    });
});
在第一个控制台中,我获取警报模型的所有对象, 但在第二个控制台中,即使模型中存在result.name,它也是“未定义的”

但是_id是由mongodb本身生成的,我可以获取该id

From 1st console:
  { __v: 0,
    _id: 55128d3a1b35c366eb974285,
    brand: 'SanDisk',
    name: 'SanDisk Cruzer Blade 8 GB Pen Drives Black (Combo of 2)',
    source:
     { name: 'Snapdeal',
       productId: '141951',
       inStock: true} 
 }
From 2nd console:
   Undefined

From 3rd console
   55128d3a1b35c366eb974285
无法解决问题,正确的解决方法是什么。。
提前感谢

这里没有问题,但您必须了解MongoDB方法会将a返回到与查询条件匹配的文档。因此,您在console.logalerts中看到的实际上是返回的光标。当find方法“返回文档”时,该方法实际上是将光标返回到文档。因此,您在第一个和第三个控制台输出中看到的是游标对象和属性

您需要在Alert.find操作的结果游标中添加一个方法,例如

Alert.find({}).toArray(function(err, alerts){
    if(err)
        console.log(err);
    console.log(alerts);
    alerts.forEach(function (result) {
        console.log(result.name);
        console.log(result._id);
    });
});
toArray方法返回一个数组,该数组包含来自游标的所有文档。该方法完全迭代游标,将所有文档加载到RAM中并耗尽游标。

我使用的是mongoose。。 而解决上述问题的方法是应用精益功能

i、 e


您最初的问题从未提到您正在使用mongoose Node.js驱动程序。
Alert.find({}).lean().exec(function(err,alerts){
    if(err)
        console.log(err);
    console.log(alerts);
    alerts.forEach(function(result){
        console.log(result.name);
        console.log(result._id);
    });
});