Реагировать на обещания Native Firebase - PullRequest
0 голосов
/ 29 апреля 2020

Я устанавливаю прослушиватель на узле Firebase, используя .on('value'), а затем пытаюсь объединить несколько обещаний, как только БД добавит значение, дважды используя .then().

Однако я получаю сообщение об ошибке firebase.database().ref().on(...., *) 'callback' must be a function

Идея, как я могу решить эту проблему?

database()
  .ref('profiles/users/' + user.uid)
  .on('value')
  .then(snapshot => {
    console.log(snapshot);
  })
  .then(() => {
    console.log('Whatever');
  });

1 Ответ

0 голосов
/ 29 апреля 2020

Слушатель 'on' использует функцию обратного вызова всякий раз, когда изменяются данные, которые установлены для слушателя, в этом и заключается ваша ошибка, поскольку вы не предоставили обратный вызов. Вы можете легко выполнить sh любые манипуляции с данными внутри этого обратного вызова без необходимости связывать кучу «.then». Вот пример установки состояния после изменения данных.

import React, { useEffect, useState } from 'react';
import database from '@react-native-firebase/database';

function User({ userId }) {
  const [user, setUser] = useState(null);
  useEffect(() => {
    const subscriber = database();
    subscriber.ref(`/users/${userId}`).on('value', snapshot => {
      setUser(snapshot.val());
      //or call another function that will do the rest of the async tasks/data manipulation
    });

    // Stop listening for updates when no longer required
    return () => subscriber();
  }, [userId]);

  // return whatever here
}

Дополнительные варианты использования здесь: https://rnfirebase.io/database/usage

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