Как получить результат транзакции в базе данных Firebase? - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь получить результат операции update на узле базы данных Firebase, работающей с Angular2.Этот метод выполняется в классе обслуживания , называемом bitro.service.ts .

Этот класс имеет атрибут items , который позволяет выполнять get, операции вставки и обновления в базе данных Firebase:

items: FirebaseListObservable<any[]>;

Код, который использовался для обновления записи Arbitro , показан ниже:

  editarArbitro(arbitro: Arbitro): void {
    this.items.update(arbitro.id, arbitro);
  }

Thisметод, получает в качестве параметра экземпляр класса Arbitro и выполняет обновление в базе данных Firebase.

Анализируя методы, применимые к операции update , я обнаружил затем метод.Я прилагаю захват, показывающий необходимые параметры для реализации затем .

then method

Возвращение метода then является объектомtype:

firebase.Promise<any>

Как я уже исследовал, этот элемент Promise возвращает код результата транзакции в базе данных.

Мой вопрос: так ли этоможно использовать этот элемент Promise , чтобы узнать, успешно завершена транзакция или нет?Как мне справиться с возвратом функции обновления?

С уважением!

1 Ответ

0 голосов
/ 25 сентября 2018

Как прокомментировал Дуг, Обещание может привести к двум состояниям: либо операция завершается успешно, в этом случае обещание разрешено и вызывается его обратный вызов then(), либо операция завершается с ошибкой, в которойобещание отклонено и вызван его catch() обратный вызов.

Таким образом, вы можете справиться с обоими с помощью:

this.items.update(arbitro.id, arbitro)
    .then(function() {
        console.log("Update completed successfully");
    })
    .catch(function(error) {
        console.log("Update failed: "+error);
    });
...