Ошибка типа: this.db.list (...). Подписка не является функцией - PullRequest
0 голосов
/ 04 июля 2018

Я разрабатываю чат Ionic 3.9 с Firebase, и у меня появляется следующая ошибка:

TypeError: this.db.list (...). Подписка не является функцией

Вот мой код:

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { AngularFireDatabase } from 'angularfire2/database';

@IonicPage()
@Component({
    selector: 'page-consersation',
    templateUrl: 'conversation.html',
})
export class ConversationPage {
    username: string = '';
    message: string = '';
    _chatSubscription;
    s;
    messages;

    constructor(public db: AngularFireDatabase,
        public navCtrl: NavController, public navParams: NavParams) {
          this.username = this.navParams.get('username');
          this._chatSubscription = this.db.list('/conversation').subscribe( data => {
            this.messages = data;
          });
        }

    sendMessage() {
        this.db.list<any>('/conversation').push({
            username: 'romain',
            message: this.message
        }).then( () => {
            // message is sent
        });
        this.message = '';
    }
}

Можете ли вы помочь мне, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 18 марта 2019

Когда вы получаете следующую ошибку polyfills.js:3 Uncaught TypeError: Object(...) is not a function..., попробуйте следующий код ниже:

this._chatSubscription = this.db.object('/conversation').valueChanges().subscribe(data => {
  this.messages = data;
});
0 голосов
/ 04 июля 2018

В this.db.list('/conversation').subscribe( вам не хватает что-то между .list(...) и .subscribe(...

Вам не хватает либо .valueChanges(), либо .snapshotChanges() ... Вы можете прочитать о различиях в документации AngularFire2 здесь .

Обычно я чаще всего использую .valueChanges (), поэтому для быстрого примера с .valueChanges () ваш код будет:

this._chatSubscription = this.db.list('/conversation').valueChanges().subscribe( data => {
    this.messages = data;
);

РЕДАКТИРОВАТЬ - исправленный код ниже. Не предполагается устанавливать переменную, равную целому .subscribe ... Определите ваш указатель / прослушиватель, а затем подпишитесь на него отдельно.

this._chatSubscription = this.db.list('/conversation').valueChanges()
this._chatSubscription.subscribe( data => {
    this.messages = data;
);

2nd EDIT - после нового сообщения об ошибке, которое OP отправил как ответ. Эта новая ошибка выглядит так, как будто она вызвана конфликтами версий - проверьте этот вопрос с несколькими возможными решениями .

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