gpt4 book ai didi

node.js - 使用node.js MongoDB驱动程序调用Collection.drop后,Mongo抛出 'topology was destroyed'错误

转载 作者:太空宇宙 更新时间:2023-11-04 00:15:10 26 4
gpt4 key购买 nike

每次当我使用 MongoDB 驱动程序调用 drop 集合函数时。抛出此错误:

"MongoError: topology was destroyed".

这是我的代码:

var dropCollection = function(db){
let collectionA = db.Collection('CollectionA');
collectionA.drop(function(err, delOK) {
if (err) console.log(err);
if (delOK) console.log("Collection deleted");

});
};
MongoClient.connect(connectionUrl, null, function(err, db){
let current_db = db.db(dbName);
dropCollection(current_db);
db.close();
});

我尝试过其他功能,例如 Collection.find。它运行没有错误。该错误似乎表明它失去了与数据库的连接。

我正在使用:
native Node 驱动程序 2.2.24
MongoDB 版本 3.4.1

最佳答案

这是因为在执行 drop() 命令之前调用了 db.close()。由于 Node 回调机制的工作方式,这是预期的。

假设集合 CollectionA 存在,将 db.close() 移动到 drop() 回调中应该按预期工作:

var dropCollection = function(db){
let collectionA = db.collection('CollectionA');
collectionA.drop(function(err, delOK) {
if (err) console.log('Error here:' + err);
if (delOK) console.log("Collection deleted");
db.close(); // move db.close() here to ensure that
// it's called *after* the drop()
});
};
MongoClient.connect(url, null, function(err, db){
let current_db = db.db(dbName);
dropCollection(current_db);
});

如果您看到类似 ns not find 的错误,则表示 CollectionA 不存在。

关于node.js - 使用node.js MongoDB驱动程序调用Collection.drop后,Mongo抛出 'topology was destroyed'错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47507844/

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