Javascript MongoDB:在一个文档中获取所有集合
我在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 + ': '
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(…)
或将其转换为数组。我如何做到这一点?我使用了一个。每个函数都是异步的,因此我无法在函数中返回它。我编辑了我的答案,以提供一个处理返回的游标对象的示例。