我正在经历learnyoumongo并且我被困在第3部分。基本上,测试数据库包含在挑战中,它充满了鹦鹉,目标是选择年龄更大的鹦鹉比输入。我得到一个奇怪的错误和谷歌充满了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:\ git \ learnyoumongo> node。\ test.js {[MongoError:服务器localhost:27017套接字已关闭] 名称:'MongoError', 消息:'server localhost:27017套接字已关闭'}
我尝试重新启动mongo,但我仍然无法将任何'parrots'数据拉出来。即使只有find({})
答案 0 :(得分:3)
问题是双管齐下 - 主要问题是我希望能够使用node test.js
运行查询,并查看parrots集合的结果。但是learnyoumongo有原子测试,这意味着他们会在之前和之后完全清除数据库,因此测试的唯一方法是learnyoumongo test.js
,并且我一直在运行node命令的空结果集。
另一个问题是db.close(),你不能只调用db.open然后调用db.close,因为open是异步的,它会在打开后立即关闭,因此套接字关闭错误。所以你把db.close放在toArray函数中,或者放在db.open的任何其他回调中