У меня есть следующий код, и я не могу понять, почему мой процесс зависает на линии, которая пытается закрыть соединение с mongodb, вот мой код:
async function save(clientCredentials, newFieldsToUpdate){
const url = `mongodb://${clientCredentials.username}:${clientCredentials.password}@my.server.ip:22222/${clientCredentials.database}`
const client = await MongoClient.connect(url, {useNewUrlParser:true, useUnifiedTopology: true})
.catch(err => { console.log(err); });
const db = client.db(clientName);
const collection = await db.collection("products");
let execute = false;
const updateOps = [];
for(let objectIdentifier in newFieldsToUpdate){
let updateOperation = {};
updateOperation['$set'] = newFieldsToUpdate[objectIdentifier];
let id = mongodb.ObjectID(objectIdentifier);
execute = true;
updateOps.push({ updateOne: { filter: {_id: id}, update: {$set: newFieldsToUpdate[objectIdentifier]}, upsert:true } })
}
if(execute){
try {
console.log('executing'); // I see this line
let report = await collection.bulkWrite(updateOps);
console.log('executed'); // I see this line
await client.close();
console.log('closed conn'); // I don't see this line! why? it's weird
return report;
} catch(ex){
console.error(ex);
}
} else {
console.log('not executing');
}
}
Заранее спасибо за любые help!
РЕДАКТИРОВАТЬ: Массовая операция составляет около 200 документов, если я попробую с одним документом, это работает, это странно. Драйвер Mongodb для узла версии 3.3.2
EDIT2: я заметил, что при использовании параметра poolSize: 1 на мон go он успешно закрывает соединение, но при использовании значения по умолчанию poolSize 5 он не закрывается, какие-либо предложения, почему это может происходить?