Как проверить, существует ли узел моментального снимка Firebase с использованием C #? - PullRequest
0 голосов
/ 02 января 2019

Я работаю с приложением Unity и использую Google Firebase, используя C #. В какой-то момент я должен либо отредактировать существующую информацию, либо добавить новую. Для этого я должен проверить, существует ли узел в моем снимке или нет, но я не могу найти функцию для этого.

HasChild () всегда возвращает true, поэтому это не полезно. Я искал, и функция exist () всегда упоминается как лучший вариант, но когда я пытаюсь использовать его (пишу как «существует» или «существует»), я получаю следующую ошибку: error CS1061: Type 'Firebase.Database.DataSnapshot' does not contain a definition for 'Exists' and no extension method 'Exists' of type 'Firebase.Database.DataSnapshot' could be found. Are you missing an assembly reference? или (...) does not contain a definition for 'exists' (...)

// The data structure looks like:
// .../questions
//      question_0
//          index = 0
//          other information...
//      question_2
//          index = 3
//          other information...
//      question_3
//          index = 5
//          other information...
//      question_6
//          index = 4
//          other information...

// The code I'm using:

public static DataSnapshot dbSnapshot; // I get this from an Event Listener

public void MyMethod(){
    int i = 0;
    bool done = false;
    do {
        string path = "questions/question_" + i.ToString() + "/index";
            if (dbSnapshot.Child(path).Exist()){  // The line that does not work!
            long newValue = (long) dbSnapshot.Child(path).Value;
            // If true, I'll do something here with this value
        } else {
            // If not, I'll do something else here
        }


        // at some point later "done" becomes true, ending loop
        // this part of the code works just fine
    } while (!done);
}

Не имея возможности использовать Exist (), я попытался проверить наличие нулевых значений:

if (dbSnapshot.Child(path).Value != null)

Но всякий раз, когда я нажимаю на вопрос_i, который не существует, я получаю сообщение об ошибке: InvalidCastException: Specified cast is not valid. Эта ошибка возникает не в самом if-документе, а в следующей строке. Похоже, что ... Value! = Null возвращает true, поэтому на следующей строке приложение пытается получить значение, но, поскольку оно не существует, я получаю ошибку.

Итак, как я могу проверить, существует ли узел, не ища нулевые значения или не используя функции Exist () и HasChild ()?

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