在使用Async关闭连接之前删除集合并等待Javascript

时间:2018-03-08 00:29:53

标签: javascript mongodb mongoose async-await

我试图在加载数据然后关闭连接之前清除数据库中的集合。我使用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,但在连接关闭之前结果是否仍然无法解析?

1 个答案:

答案 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 的函数,从而达到目的。