MongoDB:将所有集合放在一个文档中

时间:2016-08-24 15:38:20

标签: 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 + ': ' + err.message);
   deferred.resolve(visitors);
});

所以一切对我来说都很好。但我每次都会收到这个错误:

  

angular.js:12011 GET http://localhost:3000/api/visitors/getAll 400   (错误请求)

我认为它与我的api有关,所以我尝试了...findOne({_id:1},..并且有效。所以我错过了什么?

2 个答案:

答案 0 :(得分:2)

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

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

参数是:

collection.find(query[[[, fields], options], callback]);

它首先要求查询回调,然后您首先提供回调。

findOne()的测试有效,因为您通过{_ id: 1}对象传递了查询。

有关Node.js中MongoDB查询的文档是here

修改

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

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

答案 1 :(得分:0)

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