Angular6 FireBase получить значения, вызванные в те времена - PullRequest
0 голосов
/ 28 июня 2019

enter image description here

Это моя структура базы огня.При участии участника каждый идентификатор имеет несколько пар ключ-значение.

Я хочу проверить, является ли идентификатор сессии неопределенным или нет.

Я использовал следующий код

let fburl = '/meetinglist/350' ;

this.fbsub =  this.db.list(fburl).valueChanges().subscribe(res => {  
  if(res[1] != undefined) {
    console.log("session created")
  }
});

Но здесь событие изменения значения вызывается несколько раз.Для события изменения значения также чувствуется узел engagement_participant.Я просто хочу почувствовать только sessionid и token.Но сессия и токен созданы во время выполнения.Первоначально этот узел не появляется.Участник помолвки один отображается.После инициализации сеанса он создал узел сеанса и токена.Есть ли способ продолжить это.

Это событие сработало несколько раз .... и консоль session created отображалась столько раз.После перенаправления страницы событие изменения значения останавливается.Как остановить это событие.

Я использовал this.fbsub.unsubscribe();.Но это не работает.

Пожалуйста, помогите мне

1 Ответ

0 голосов
/ 28 июня 2019

Когда вы подписались на /meetinglist/350, вы получаете событие при каждом обновлении /meetinglist/350. Если вы хотите подписаться только на token и sessionId, вы можете поместить свои данные в объект (если вы можете обновить модель хранилища) со следующим:

{
  350: {
    tokens: {
      token: "...",
      sessionId: "..."
    }
  }
}

И подпишитесь на /meetinglist/350/tokens с:

this.db.list('/meetinglist/350/tokens').valueChanges().subscribe( ... );

Вы можете отменить подписку на изменение списка с помощью следующего кода: ( Из angularfire2 rep )

this.mySubcribtion = this.db.list('/meetinglist/350/tokens').valueChanges().subscribe(
  ...
);

// Later
this.mySubcribtion.unsubscribe();

В некоторых случаях вам может потребоваться снимок ваших данных без прослушивания для изменений, например, при инициализации элемента пользовательского интерфейса, который вы не делаете ожидать изменения. Вы можете использовать метод Once (), чтобы упростить это Сценарий: он срабатывает один раз, а затем не запускается снова.

Вы можете сделать это с помощью следующего кода: ( От angularfire2 rep )

const sessionIdPromise = this.db.list(fburl).query.once('value');
const tokenPromise = this.db.list(fburl).query.once('value');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...