Запись в таблицу Firebase в реагировать на родной - PullRequest
0 голосов
/ 23 сентября 2018

У меня есть реагирующее нативное приложение для Android, подключенное к firebase.Одна из таблиц «Содержимое» имеет следующую схему: схема Firebase

У меня есть «Опубликовать!»кнопку, и при нажатии я хочу, чтобы сообщение пользователя было записано в эту таблицу Firebase.

<Button
  style={{height: 50, width: 20, paddingBottom: 10, paddingRight: 10}}
  title="Post It!"
  color='blue'
  onPress={this.uploadTextPost}
/>

Функция «uploadTextPost» выглядит следующим образом:

  uploadTextPost() {
    this.rootRef('Content/qwa4').set({
      Author: this.state.author,
      Content_Text: this.state.textPostContent,
      Content_Title: this.state.title,
      Content_Type: 'TEXT',
      Downvotes: this.state.downvotes,
      Plot_Point: this.state.textPlotPoint,
      Timestamp: this.state.timestamp,
      Upvotes: this.state.upvotes
    });
  }

, которая обращается к this.state:

this.rootRef = firebase.database().ref();

    this.state = {
      author: 'John JJ James',
      textBookSubject: 'na',
      textPlotPoint: 'na',
      textPostContent: 'na',
      upvotes: 0,
      downvotes: 0,
      title: 'Hopefully this works',
      timestamp: '08/18/2018 19:59:23',
      index: 0,
      routes: [
        { key: 'first', title: 'Text Post' },
        { key: 'second', title: 'Art Post' },
        { key: 'third', title: 'Request'},
      ],
    };
  }

Однако, когда я проверяю ее в моемЭмулятор Android, нажав кнопку «Опубликовать», ничто заполняет базу данных.Есть идеи почему?

1 Ответ

0 голосов
/ 25 сентября 2018

firebase.database().ref(PATH) возвращает ссылку на некоторый произвольный путь.Устанавливая this.rootRef в firebase.database.ref(), вы делаете this.rootRef корневой ссылкой базы данных (которая не является вызываемой функцией).

Если вы не хотите изменять uploadTextPost(), вы можете изменить this.rootRef на firebase.database.ref, и в этом случае вызов this.rootRef('Content/qwa4') будет эквивалентен вызову firebase.database.ref('Content/qwa4').

Однако я бы посоветовал вам сохранить this.rootRef в качестве фактической корневой ссылки базы данных (поэтому this.rootRef = firebase.database.ref()).В этом случае uploadTextPost() должно быть:

uploadTextPost() = {
  this.rootRef.child('Content/qwa4').set(...);
}

Ознакомьтесь с документацией firebase.database.Reference, чтобы узнать, почему метод child работает здесь.

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