我试图在加载数据然后关闭连接之前清除数据库中的集合。我使用MongoDB和Mongoose作为数据库。我的代码如下:
function closeConnection() {
return mongoose.connection.close()
}
function dropCollections() {
return People.collection.drop()
}
async function doItAll() {
await dropCollections()
await closeConnection()
}
doItAll()
People
是一个猫鼬模型。我的印象是await语句会在继续之前等待初始承诺解决,但是在收集集合之前,与数据库的连接会关闭。实现这个目标的正确方法是什么?我可以使用async和await来做吗?
我注意到的一件事是People.collection.drop()
返回undefined,但在连接关闭之前结果是否仍然无法解析?
答案 0 :(得分:0)
尝试一次,如果还没有解决:
async function closeConnection() {
return mongoose.connection.close();
}
async function dropCollections() {
return People.collection.drop();
}
async function doItAll() {
const result = await dropCollections();
if (result) console.log("Collection dropped");
await closeConnection();
}
doItAll();
await
关键字将“等待”Promise 函数。由于 collection.drop()
是 Promise 而 dropCollections()
不是,因此您可以将其声明为类似 Promise 的函数,从而达到目的。