Как узнать тип каждого свойства в документе Firestore? - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть эта БД:

root
 \_ users
     \_ uid
         \_ name: "Pathis"
         \_ admin: true
     \_ uid
         \_ name: "Venkat"
         \_ admin: false

Код для получения данных:

db.collection("users").whereEqualTo("admin", true).get().addOnCompleteListener(task -> {
    if (task.isSuccessful()) {
        for (QueryDocumentSnapshot document : task.getResult()) {
            boolean admin = document.getBoolean("admin");
        }
    }
});

Это работает, потому что я знаю типы (имя - строка, администратор - логическое значение) , Но как бы это сработало, если бы я их не знал? Мне нужен способ получить документ и проверить каждое свойство. Допустим, я нахожу имя, и я хотел бы проверить как тип String, я нахожу admin, и я должен получить логическое значение. Есть ли решение для этого?

1 Ответ

1 голос
/ 06 апреля 2020

Если вы заранее не знаете тип значения, вам нужно будет получить доступ к значению как объекту с помощью get () , а затем проверить его тип с помощью Java instanceof оператор. Например:

Object adminObject = document.get("admin");
if (adminObject instanceof String) {
    String admin = (String) adminObject;
}
else if (adminObject instanceof Boolean) {
    boolean admin = (Boolean) adminObject;
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...