Javascript 使用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(

我正在尝试使用native Node.js驱动程序将MongoDB查询的结果写入文件。我的代码如下(基于本文:):


文件已写入,但内容“未定义”。但将结果打印到控制台仍然有效。

您的代码没有检查聚合回调上的
错误

您可能会遇到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();
    });
});