Javascript 使用native Node.js驱动程序将MongoDB结果写入文件
我正在尝试使用native Node.js驱动程序将MongoDB查询的结果写入文件。我的代码如下(基于本文:):Javascript 使用native Node.js驱动程序将MongoDB结果写入文件,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我正在尝试使用native Node.js驱动程序将MongoDB查询的结果写入文件。我的代码如下(基于本文:): 文件已写入,但内容“未定义”。但将结果打印到控制台仍然有效。您的代码没有检查聚合回调上的错误 您可能会遇到Mongo错误,结果是未定义 我可能会怀疑的另一件事是,您会收到多个回调——每个回调都会创建一个新文件,删除内容 尝试使用fs.appendFile而不是fs.writeFile,看看您是否获得了预期的数据(加上不需要的未定义的)对于遇到此问题的任何人,关于将db.close(
文件已写入,但内容“未定义”。但将结果打印到控制台仍然有效。您的代码没有检查聚合回调上的
错误
您可能会遇到Mongo错误,结果是未定义
我可能会怀疑的另一件事是,您会收到多个回调——每个回调都会创建一个新文件,删除内容
尝试使用fs.appendFile
而不是fs.writeFile
,看看您是否获得了预期的数据(加上不需要的未定义的)对于遇到此问题的任何人,关于将db.close()放在何处的解决方案如下:
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();
});
});
谢谢你的建议,但我仍然在文件中得到一个“未定义的”。我只是注意到你没有检查聚合回调上的错误——只是更新了答案以反映这就是它。我在第二个collection.aggregate
块中过早地关闭了与数据库的连接。现在我只需要想一想把结束语放在哪里。上面发布了更新的代码。
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();
});
});