Очистить хранилище сеансов

#javascript #node.js #mongodb #session #mongoose

#javascript #node.js #mongodb #сеанс #мангуст

Вопрос:

В настоящее время я разрабатываю Node.js применение. Я использую connect-mongo с помощью Express для обработки моего хранилища сеансов. Я также использую Mongoose для других операций с базой данных.

Однако, когда я повторно запускаю свой сервер для тестирования новой функциональности, старые данные сеанса все еще существуют. Это приводит к несоответствиям данных и некоторым сложным ошибкам.

Поэтому при первом запуске сервера я хотел бы иметь возможность очистить все данные из коллекции сеансов в моей базе данных Mongo.

Я знаю, что, используя Mongoose, я могу сделать что-то подобное, чтобы очистить коллекцию:

 User.remove({}, function (error) {
  console.log('Emptied user collection')
});
  

Однако я не знаю, как я могу получить ссылку на коллекцию, не объявляя ее схему.

Кто-нибудь знает, как я могу заставить это работать? Или есть какой-то совершенно другой подход, который я должен использовать, чтобы справиться со всем этим?

Ответ №1:

Хорошо, я думаю, что нашел несколько решений своей проблемы.

На самом деле довольно просто получить ссылку на коллекцию без объявления ее схемы. Не уверен, как я не нашел этого в своих исследованиях, прежде чем задать этот вопрос… Итак, вот полное решение того, о чем я спрашивал:

 mongoose.connection.db.collection('sessions', function (error, collection) {
  if (error) {
    console.error('Problem retrieving sessions collection:', error);
  } else {
    collection.remove({}, function (error) {
      if (error) {
        console.error('Problem emptying sessions collection:', error);
      } else {
        console.log('Emptied sessions collection');
      }
    });
  }
});
  

Однако в моем случае я действительно хотел удалить все данные из базы данных и пытался делать это по одной коллекции за раз (потому что я знал, как очистить коллекцию). Вместо этого мне просто нужно было использовать db.dropDatabase() .