【发布时间】:2018-08-16 05:47:06
【问题描述】:
我正在尝试在加载数据之前清除数据库中的集合,然后关闭连接。我正在使用 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() 返回未定义,但结果不应该在连接关闭之前解决吗?
【问题讨论】:
-
做
mongoose.connection.close()和People.collection.drop()返回一个承诺?如果不是,那么 await 对您没有任何用处 - async/await 是 Promise 的“语法糖”,而不是异步的包罗万象 -
mongoose.connection.close会,但People.collection.drop()不会。我怎样才能在收盘前“等待”下跌呢?看起来它的行为是异步的 -
你需要“承诺”
People.collection.drop -
好的,我试试 Node 的
util.promisify -
根据the docs,
drop确实返回了一个承诺?
标签: javascript mongodb mongoose async-await