#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()
.