Как уже указывалось, вы пытаетесь создать реляционную базу данных из какой-либо реляционной базы данных, которую вы действительно не хотите делать, но в любом случае, если у вас есть случай, когда вы должны это сделать, это решение, которое вы можете использовать , Сначала мы делаем поиск foreach в коллекции A (или в вашем случае пользователей), и затем мы получаем каждый элемент как объект, тогда мы используем свойство объекта (в вашем случае uid) для поиска в нашей второй коллекции (в ваших комментариях к случаю), если мы может найти его, тогда у нас есть совпадение, и мы можем печатать или что-то делать с ним. Надеюсь, это поможет вам и удачи:)
db.users.find().forEach(
function (object) {
var commonInBoth=db.comments.findOne({ "uid": object.uid} );
if (commonInBoth != null) {
printjson(commonInBoth) ;
printjson(object) ;
}else {
// did not match so we don't care in this case
}
});
Прямо сейчас ваш код пытается инициализировать FirebaseApp
для каждого запроса. Это не нужно и фактически запрещено (как показано в сообщении об ошибке). Самое простое решение - проверить, инициализирована ли уже FirebaseApp
с помощью:
if (FirebaseApp.getApps().isEmpty()) {
String DATABASE_URL = "https://name.firebaseio.com/";
try {
ClassLoader classLoader = getClass().getClassLoader();
InputStream inputStream = classLoader.getResourceAsStream("token.json");
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials( GoogleCredentials.fromStream(inputStream))
.setDatabaseUrl(DATABASE_URL)
.build();
FirebaseApp.initializeApp(options);
} catch (IOException e) {
e.printStackTrace();
System.out.println("Error loading database");
}
}
FirebaseToken decodedToken = FirebaseAuth.getInstance().verifyIdToken(idToken);
String uid = decodedToken.getUid();
return service.getAll();
Но это все равно проверяет FirebaseApp
каждый вызов и, честно говоря, просто делает код этого метода больше, чем нужно. Поэтому, вероятно, лучше привязаться к жизненному циклу контроллера и запускать код, который инициализирует FirebaseApp
, только когда контроллер создается. Я не достаточно осведомлен о Spring, чтобы ответить, как это сделать, но в этой статье показаны некоторые многообещающие подходы.