我遇到了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},..
并且有效。所以我错过了什么?
答案 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(){...});