Асинхронные обновления в реальном времени с проблемой Firestore - PullRequest
0 голосов
/ 20 октября 2019

Я пытаюсь получить данные в реальном времени из Firestore с помощью React-Native. У меня есть файл helpers.js, в котором я храню и экспортирую все функции get и set для Firestore, и я просто импортирую их в App.js, чтобы использовать его.

Когда я пытаюсь получить только один раз (без реального времени)работает отлично. Это работает:

В helpers.js:

const waitlistRef = db.firestore().collection('waitlist');

export async function getWaitlist() {
  let waitlist = [];

  await waitlistRef.get().then(res => {
      res.forEach(doc => {
      waitlist.push(doc.data());
    });
  });

  return waitlist;
}

В App.js:

import { getWaitlist } from './helpers';

...

useEffect(() => {
 getWaitlist().then(waitlist => console.log(waitlist));
}, []);

Так что это работает, но я могу получить его только один раз (нет в реальном времени). Чтобы получать обновления в реальном времени, я попробовал этот метод:

В helpers.js:

const waitlistRef = db.firestore().collection('waitlist');

export async function getWaitlist() {
  let waitlist = [];

  await waitlistRef.onSnapshot(snapshot => {
    snapshot.forEach(doc =>
      waitlist.push(doc.data()),
    );
  });

  return waitlist;
}

В App.js:

import { getWaitlist } from './helpers';

...

useEffect(() => {
 getWaitlist().then(waitlist => console.log(waitlist));
}, []);

Но когдаЯ пытаюсь записать массив waitlist, который должен был быть возвращен из вспомогательной функции, я просто получаю пустой массив.

Есть идеи?

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