Гнездо не подключается на angular-firebase для получения обновления в реальном времени

Вероятно, самая подробная и всесторонняя статья на this такова:

Нежное объяснение ключевого слова этого «this» в JavaScript

Идея позади this заключается в понимании того, что типы вызова функции имеют важное значение при установке значения this.


Когда возникают проблемы с идентификацией this, не спрашивайте себя:

Где this взято из ?

, но спросите себя:

Как вызывается функция ?

arrow function (специальный случай прозрачности контекста) спросите себя:

Какое значение имеет this, где определена функция стрелки ?

Этот настрой правилен при работе с this и избавит вас от головной боли.

0
задан Frank van Puffelen 16 January 2019 в 15:00
поделиться

1 ответ

Функция doc (). Get () возвращает обещание, а не поток (Observable). С обещанием вы можете воспользоваться возможностью получить данные только один раз, если это ваша цель. Для того, чтобы сначала получить данные, а также прослушать изменения, вам нужно использовать метод doc (). OnSnapshot () .

В качестве дополнительного упоминания, я бы рекомендовал попробовать пакет Angular @ angular / fire (angular / angularfire2) для разработки Angular + Firebase, так как существует много официальной документации, специальной поддержки и вопросов уже там для этого. С его помощью можно уменьшить метод getOrder до:

getOrder(id: string): Observable<Order> {
    console.log('on get order snapshot');
    return db.doc<Order>(`orders/${id}).valueChanges();
}
0
ответ дан OneLunch Man 16 January 2019 в 15:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: