Ist es möglich, eine Sammlung oder die gesamte Datenbank mit mongoose.js zu entfernen?
Antworten
Zu viele Anzeigen?Ja, obwohl Sie dies über den nativen MongoDB-Treiber und nicht über Mongoose selbst tun. Unter der Annahme einer erforderlichen, verbundenen, mongoose
Variable ist das native Db
-Objekt über mongoose.connection.db
zugänglich, und dieses Objekt bietet dropCollection
und dropDatabase
Methoden.
// Löschen der 'foo'-Sammlung aus der aktuellen Datenbank
mongoose.connection.db.dropCollection('foo', function(err, result) {...});
// Datenbank löschen
mongoose.connection.db.dropDatabase(function(err, result) {...});
Für diejenigen, die das mochajs Test-Framework verwenden und alle DB-Sammlungen nach jedem Test leeren wollen, können Sie das folgende verwenden, das async/await verwendet:
nachJedem(async function () {
const collections = await mongoose.connection.db.collections()
for (let collection of collections) {
await collection.remove()
}
})
Mongoose verweist auf die Verbindung bei jedem Modell. Daher kann es nützlich sein, auch die DB oder Kollektion von einem individuellen Modell zu entfernen.
Zum Beispiel:
// Entfernen der 'foo'-Kollektion aus der aktuellen Datenbank
User.db.dropCollection('foo', function(err, result) {...});
// Entfernen der aktuellen Datenbank
User.db.dropDatabase(function(err, result) {...});
Für die Version 5.2.15 von Mongoose + Mocha Tests, bei der Sie alle Sammlungen vor jedem Test löschen müssen.
beforeEach(async () => {
const collections = await mongoose.connection.db.collections();
for (let collection of collections) {
// Hinweis: collection.remove() wurde veraltet.
await collection.deleteOne();
}
});
- See previous answers
- Weitere Antworten anzeigen