Javascript MongoDB:在一个文档中获取所有集合

Javascript MongoDB:在一个文档中获取所有集合,javascript,angularjs,mongodb,Javascript,Angularjs,Mongodb,我在Javascript和mongoDB方面遇到了一些麻烦。我通过以下方式连接: var db = mongo.db(config.connectionString, { native_parser: true }); 并绑定我的访问者集合db.bind('visitors')。因此,在我尝试使用该行获取所有文档之后: db.visitors.find(function (err, visitors) { if (err) deferred.reject(err.name + ': '

我在Javascript和mongoDB方面遇到了一些麻烦。我通过以下方式连接:

var db = mongo.db(config.connectionString, { native_parser: true });
并绑定我的访问者集合
db.bind('visitors')。因此,在我尝试使用该行获取所有文档之后:

db.visitors.find(function (err, visitors) {
   if (err) deferred.reject(err.name + ': ' + err.message);
   deferred.resolve(visitors);
});
所以我觉得一切都很好。但我每次都会遇到这样的错误:

angular.js:12011获取400 (请求错误)


我认为这与我的api有关,所以我尝试了
…findOne({u id:1},…
,这很有效。我也错过了什么吗?

我想你错过了
find()
的参数部分。即使你不想寻找特定的东西,你也必须在参数部分传递一个空对象。所以它看起来应该像
find>({},function(){…});

是的,它是错误的。它应该是:

db.visitors.find({}, function (err, visitors) {
   if (err) deferred.reject(err.name + ': ' + err.message);
   deferred.resolve(visitors);
});
参数包括:

collection.find(查询[[,字段],选项],回调];

它首先需要一个查询,然后是回调,而您首先要提供回调

使用
findOne()
进行的测试之所以有效,是因为您正在通过
{id:1}
对象传递查询

Node.js中有关MongoDB查询的文档如下所示

编辑:

使用
.find()
并通过将光标对象转换为数组以异步方式处理光标对象的示例:

db.visitors.find({}).toArray(function (err, docs) {
    if (err) throw err;
    console.log(docs);
});

您是否考虑到
.find({})
将返回一个游标对象,而不是只返回一个对象的.findOne()?您必须处理访问者结果:
var cursor=collection.find({});
然后
cursor.each(…)
或将其转换为数组。我如何做到这一点?我使用了一个。每个函数都是异步的,因此我无法在函数中返回它。我编辑了我的答案,以提供一个处理返回的游标对象的示例。