Объединяйте таблицы из Firebase с React Native - PullRequest
0 голосов
/ 08 июня 2019

Привет, я новичок в React Native, я делаю приложение, которое управляет обществами, я добавил таблицы "отделы" и "сообщества" в свою базу данных Firebase, теперь я хочу объединить эти таблицы таким образом, чтобы, если яудалите ценности из отделов тогда, также мое соответствующее аганистское общество это также удалило.

Это моя функция удаления отдела, также Удалить общественное веселье тоже самое;

deleteDept = () => {
  var abcd = deptref
    .orderByChild('uuid')

  abcd.once('value', function(abcdSnap) {
    var a = abcdSnap.val();
    var b = Object.keys(a)[0];

    deptref.child(b)
      .remove()
      .then(function() {
        console.log('Remove succeeded.');
        alert('Department Removed ');
        this.setState({
          isDialogVisible: false
        });
      })
      .catch(function(error) {
        console.log('Remove failed: ' + error.message);
      });
  });
};

Это моя база данных firebase

1 Ответ

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

Вы не можете думать о реальном времени Firebase, как вы это делаете для баз данных RDBMS / SQL.Представьте, что FireBase Realtime - это один большой JSON-объект, с помощью которого можно получить доступ к нужным данным через ключ объекта (который также является URL-адресом).Это означает, что в объекте JSON не существует такой вещи, как «соединения» (и в реальном времени firebase).Я бы посоветовал прочитать больше о лучших методах разработки вашей схемы.Да, для firebase realtime, ожидайте, что он будет иметь дублированные данные (в отличие от базы данных SQL).


tl; dr:

  1. Создайте схему как можно более плоской
  2. Не храните ваши данные в виде массивов.Если вы это сделаете, firebase сохранит массив как объект, ключи которого являются индексом массива:

    array = ['aha', 'hoho']

будетхранится как:

array: {
  0: 'aha',
  1: 'hoho'
}
Создайте свою схему так, чтобы вы могли извлекать нужные данные с минимальным количеством вызовов (да, для этого ожидайте дублированных данных):

Например:

{
  users: {
    user_id1: {
      name: 'user 1',
      phone: '123456',
      email: 'testt@gmail.com'
    }
  },
  events: {
    participantst: {
      user_id1: {   // <= note for here I only want user's name & email thus its in this manner
        name: 'user 1',
        email: 'test@gmail.com'
      }
    }
  }
}

НЕ

{
  users: {
    user_id1: {
      name: 'user 1',
      phone: '123456',
      email: 'testt@gmail.com'
    }
  },
  events: {
    participantst: {
      user_id1: user_id1 // <= Doing it like this means you would need to make another call to the 'users' node to fetch the user data
    }
  }
}

и многое другое.

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