86 Stimmen

Mongoose.js: Sammlung oder Datenbank entfernen

Ist es möglich, eine Sammlung oder die gesamte Datenbank mit mongoose.js zu entfernen?

112voto

David L. Walsh Punkte 23705

Dies kann jetzt in Mongoose gemacht werden.

MyModel.collection.drop();

Hut ab: https://github.com/Automattic/mongoose/issues/4511

110voto

JohnnyHK Punkte 289697

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) {...});

14voto

adamc Punkte 1205

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()
  }
})

3voto

Huston Hedinger Punkte 511

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) {...});

3voto

Durja Punkte 557

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(); 
     }
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X