Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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
Json NodeJS+;Mongo-如何获取收藏的内容?_Json_Node.js_Mongodb - Fatal编程技术网

Json NodeJS+;Mongo-如何获取收藏的内容?

Json NodeJS+;Mongo-如何获取收藏的内容?,json,node.js,mongodb,Json,Node.js,Mongodb,我正在用mongo编写一个简单的NodeJS应用程序。要连接到mongo,我使用: var mongo = require('mongodb'), Server = mongo.Server, Db = mongo.Db, ObjectID = require('mongodb').ObjectID; db.open(function(err,db) {...}; 所以,我有数据库“docs”,我创建了一个名为“companys”的集合。现在它有4个对象(记录)。我想以数组的形式获取此集合的全

我正在用mongo编写一个简单的NodeJS应用程序。要连接到mongo,我使用:

var mongo = require('mongodb'),
Server = mongo.Server,
Db = mongo.Db,
ObjectID = require('mongodb').ObjectID;
db.open(function(err,db) {...};
所以,我有数据库“docs”,我创建了一个名为“companys”的集合。现在它有4个对象(记录)。我想以数组的形式获取此集合的全部内容,并逐行显示:

//get companies list
app.get('/companies',function(req,res){
db.collection("companies",function(err,collection){
    collection.find({},function(err, companies) {
        companies.forEach(function(err,company){
                console.log (company);
            }
        );
    });
});
});
但是,Node会向我返回这样的错误:

TypeError: Object #<Cursor> has no method 'forEach'
TypeError:对象#没有方法“forEach”

有什么想法吗?提前感谢。

使用。每个公司,而不是forEach

传递到
find
回调中的
公司
参数是一个对象,而不是数组。调用
toArray
将查询结果转换为一个对象数组,或
每个对象一次处理一个结果。

是的,我收到了,谢谢!但是,我想再问一个问题:每个“公司”对象都有几个域,例如公司名称。我正在尝试获取console.log(company.company_name);,但它不起作用。它返回“无法读取null的属性'company\u name'”如果company是游标的有效部分,它怎么可能为null?当传递到
每个
回调中的
company
参数为null时,这意味着您已到达游标的末尾(没有更多结果)。不确定,我理解您的意思,哦。我会尽量阅读你们提供的手册,谢谢。但是我如何才能获得当前对象“公司”的物业公司名称?就像你提到的:
company.company\u name
噢,真丢脸-我刚刚注意到它给我打印了4个名称,而在第五天就出现了这个错误!这是因为我在这个集合中只有4个对象。但我仍然无法得到它-如果集合“companys”只有4个对象,为什么在打印4个object.names之后,节点尝试获取其他对象并得到一个错误?我想,它应该打印4个公司名称和退出函数。我强烈建议您使用Mongoose tho。节省大量时间。我今天只想问你们:猫鼬和猫鼬有什么区别吗?哪个更好?@IlyaRusanen MongoDB是NoSQL数据库。而Mongoose是一种对象建模工具,允许您定义表示MongoDB文档(JSON对象)的模式