使用本地Node.js驱动程序将MongoDB结果写入文件

我正在尝试使用本机Node.js驱动程序将MongoDB查询的结果写入文件。 我的代码是以下(基于这个职位: 在Node.js中写入文件 ):

var query = require('./queries.js'); var fs = require('fs'); var MongoClient = require('mongodb').MongoClient; MongoClient.connect("mongodb://localhost:27017/test", function(err, db) { if(err) { return console.dir(err); } var buildsColl = db.collection('blah'); collection.aggregate(query.test, function(err, result) { var JSONResult = JSON.stringify(result); //console.log(JSONResult); fs.writeFile("test.json", JSONResult, function(err) { if(err) { console.log(err); } else { console.log("The file was saved!"); } }); }); collection.aggregate(query.next, function(err, result) { var JSONResult = JSON.stringify(result); //console.log(JSONResult); db.close(); }); }); 

该文件被写入,但内容是“未定义的”。 打印结果到控制台虽然工作。

您的代码没有检查聚合callback中的err

你可能会得到一个Mongo的错误,结果是在这种情况下undefined

其他的东西,我可以怀疑的是,你正在得到多个callback – 每一个创build一个新的文件,擦除内容。

尝试使用fs.appendFile而不是fs.writeFile ,看看你是否得到预期的数据(加上不需要的undefined

对于任何人来说,在哪里放置db.close()的解决scheme如下:

 collection.aggregate(query.test, function(err, result) { var JSONResult = JSON.stringify(result); //console.log(JSONResult); fs.writeFile("test.json", JSONResult, function(err) { if(err) { console.log(err); } else { console.log("The file was saved!"); } }); collection.aggregate(query.next, function(err, result) { var JSONResult = JSON.stringify(result); //console.log(JSONResult); db.close(); }); });