我正在浏览learnyoumongo,我被第三部分卡住了。基本上,挑战中包含一个测试数据库,其中充满了鹦鹉,目标是选择年龄大于输入的鹦鹉。我得到了一个奇怪的错误,谷歌上全是mongo 2。x解决方案不完全相同的问题,我使用mongo 3.0
这是javascript代码:
var mongo = require('mongodb').MongoClient;
var parsedInput = parseInt(process.argv[2]);
var results;
mongo.connect('mongodb://localhost:27017/learnyoumongo', function(err, db){
results = db.collection('parrots').find({ age: { $gt: parsedInput } } ).toArray(function(err, doc) //find if a value exists
{
if(doc) //if it does
{
console.log(doc);
}
else{
console.log(err);
}
});
//console.log(results);
db.close();
});
这是一个奇怪的错误信息:
PS C:gitlearnyoumongo> node .test.js {[MongoError: server localhost:27017 sockets closed]名称:"MongoError",消息:'server localhost:27017 sockets closed'}
我试着重新启动mongo,但我仍然无法取出任何"鹦鹉"数据。即使只有find({})
问题是两方面的—主要问题是我希望能够使用node test.js
运行查询,并查看鹦鹉集合的结果。但是learnyoumongo有原子测试,这意味着它们在前后完全清除数据库,所以测试的唯一方法是learnyoumongo test.js
,我一直得到一个空的结果集运行node命令。
另一个问题是db.close(),你不能只调用db。打开,然后db。关闭,因为打开是异步的,它会在打开后立即关闭,因此出现套接字关闭错误。输入db。在toArray函数中close,或在db.open