將 Mongoose ODM 與 MongoDB 實體一起使用,如何洗掉資料庫實體的所有集合中的所有檔案,而不必破壞集合本身或其索引?
對比:
await mongoose.connection.db.dropDatabase();
洗掉給定的資料庫,包括所有集合、檔案和索引。
根據貓鼬檔案,這是不希望的。
uj5u.com熱心網友回復:
遍歷由Connection.prototype.collections哈希值給出的資料庫中的所有集合,并用于Query.prototype.deleteMany()洗掉集合中的每個檔案。
deleteMany()查詢/操作是異步的(它回傳一個類似QueryPromise 的物件)。為了迭代地執行所有集合的操作,我們可以將每個集合映射到一個帶有異步回呼的 Promise,我們在其中await呼叫,并Promise.all在所有查詢都已解決時使用它來解決。
async function clearCollections() {
const collections = mongoose.connection.collections;
await Promise.all(Object.values(collections).map(async (collection) => {
await collection.deleteMany({}); // an empty mongodb selector object ({}) must be passed as the filter argument
}));
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/417625.html
標籤:
