gpt4 book ai didi

javascript - 使用 Node.js 驱动程序打印和更新 MongoDB 中的所有文档

转载 作者:行者123 更新时间:2023-12-03 11:58:54 25 4
gpt4 key购买 nike

我正在编写一个脚本,该脚本应该获取集合中文档的数量,然后将它们全部打印出来,然后更新它们中的每一个,问题是我在运行它时遇到错误:MongoError:连接按申请关闭。这是我的代码,我尝试将 db.close() 放在几个没有帮助的地方。

var request = require('request');
var cheerio = require ('cheerio');
var fs = require('fs');
var MongoClient = require('mongodb').MongoClient;

var dbName = "yahooStocks";
var port = "27017";
var requiredCollection = "stocks"
var host = "localhost";


MongoClient.connect("mongodb://" + host + ":" + port + "/" + dbName, function (error, db){

if(error) throw error;
console.log ("Connected to: " + "mongodb://" + host + ":" + port + "/" + dbName);
function update () {

db.collection(requiredCollection).count({}, function (error, numOfDocs) {
if(error) throw error;
console.log("the number of docs is : " , numOfDocs);

for (i=1; i<10; i++) {
var findOneQuery = {'_id' : i};
db.collection(requiredCollection).findOne(findOneQuery, function (error, doc) {
if(error) throw error;

console.log(doc._id + ". Doc - > " , doc);

}); // end of findOne

//db.close();
}

db.close();
}); // end of count




}
update();
// db.close();
}); // end of connection to MongoClien

最佳答案

您需要确保以异步方式运行这些查询。最好的方法是使用异步库。 (本例使用 Mongoose )

使用异步库:https://github.com/caolan/async

var queries = [];

for (i=1; i<10; i++) {
queries.push(db.collection(requiredCollection).findOne({'_id' : i}));
}

async.each(queries, function(query, callback) {
query.exec(function(err, doc) {
if (err) callback(err);

console.log(doc._id + ". Doc - > " , doc);

// do things here

callback();
});
}, function(err) {
// when everything is complete.
});

关于javascript - 使用 Node.js 驱动程序打印和更新 MongoDB 中的所有文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25493324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com