使用React Native从Firebase连接表

时间:2019-06-08 08:36:43

标签: javascript react-native expo react-native-firebase

嗨,我是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);
      });
  });
};

This is my firebase database

1 个答案:

答案 0 :(得分:0)

您无法像使用RDBMS / SQL数据库那样实时地查看Firebase。将Firebase实时视为一个大的JSON对象,可以通过对象键(也是URL)访问所需的数据。这意味着JSON对象(和firebase实时)中没有“联接”之类的东西。我建议阅读更多有关设计方案的最佳实践的信息。是的,对于Firebase实时而言,期望它具有重复的数据(与SQL dbs不同)。


tl; dr:

  1. 将架构设计为尽可能平坦
  2. 不要将数据存储为数组。如果这样做,firebase会将数组存储为对象,其键是数组的索引:

    array = [   '啊哈'   'hoho' ]

将存储为:

array: {
  0: 'aha',
  1: 'hoho'
}
  1. 设计您的架构,以便您可以在尽可能少的调用中获取所需的数据(是的,需要重复的数据):

例如:

{
  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
    }
  }
}

还有更多。