Как получить доступ к другой базе данных, основанной на разных пользователях, в среде Spring Data Mongodb?

#spring #mongodb #spring-boot #spring-data #spring-data-mongodb

#spring #mongodb #spring-boot #spring-данные #spring-data-mongodb

Вопрос:

В моей текущей реализации архитектура MongoDB выглядит следующим образом

 DB : schoola
Collections : 
 1. students
 2. users
  
 DB : schoolb
Collections : 
 1. students
 2. users
  

И в каждом экземпляре файла свойств Spring Server я делаю —

 SPRING_DATA_MONGODB_DATABASE: <dbname>
SPRING_DATA_MONGODB_URI: <URI to <dbname>>
  

Очевидно, что это не масштабируемо, и я уже устал поддерживать разные экземпляры сервера.
Вместо того, что я ищу, у меня будет пользовательская база данных

 DB : user
Collections :
 1. users (with fields {userName, password, associatedWith: <DB NAME OF THE SCHOOL USER IS ASSOCIATED WITH>)
  

Итак, как мне сделать следующее?
Когда пользователь пытается войти в систему, я пытаюсь выполнить проверку с помощью пользователя / users и в случае успеха извлекаю значение, связанное с.
Затем я подключаюсь к этой базе данных и предоставляю услуги этому пользователю, опять же, я не подключаюсь к mongodb при каждом вызове Rest, вероятно, мне нужно поддерживать UserContext в памяти.

Комментарии:

1. Вы бы сделали это с JDBC, имея 2 разных источника данных и используя правильный экземпляр каждый раз. Но почему? Почему бы просто не использовать одну?

2. вы должны настроить два источника данных и выбрать правильный в зависимости от ваших потребностей. Эта статья может помочь вам

Ответ №1:

Одним из способов сделать это было бы предоставить свой собственный вариант MongoDatabaseFactory , который на getMongoDatabase() считывает клиента из источника контекста и возвращает MongoDatabase для использования.

Этот пример немного устарел, но дает представление об общем направлении здесь.