Отправка объекта в firebase с использованием значения ключа Dynami c - PullRequest
0 голосов
/ 08 мая 2020

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

db.collection(collectionName).add({
  key1: val1,
  key2: val2,
  etc...
})

Потому что ключи могут быть разными в зависимости от того, какой компонент использует таблицу. Я думал о том, чтобы сделать это с помощью .map () или forEach, просматривая каждый ключ, но я продолжаю получать синтаксические ошибки.

Первоначально я предполагал, что могу просто отправить объект new_row, но это не похоже на

Вот мой компонент таблицы:

class Table extends Component {
constructor(props){
    super(props);
    this.state = {
        rows: null,
        temprows: null,
        newrow: null,
        parent: this.props.tableComponent
    }
}
    addRow = function(){
      var new_rows = [...this.state.rows];
      new_rows.push(this.state.newrow);
      var new_row = JSON.parse(JSON.stringify(new_rows[0]));

      Object.keys(new_row).forEach(function(index) {
        new_row[index] = '';
      });

      db.collection(collectionNAame).add({
         I want to add the data here
      })

      this.setState({
        rows: new_rows,
        newrow: new_row
      });
}

Есть ли еще лучший подход, какой-то другой метод, кроме .add для этого конкретного c case?

1 Ответ

1 голос
/ 08 мая 2020

В методе .add db.collection распространите и передайте this.state.newrow, а в блоке then обновите свое состояние. Также в вашей функции addRow new_row должно быть получено из состояния (а не new_rows[0]

Вот так

class Table extends Component {
  constructor(props) {
    super(props);
    this.state = {
      rows: null,
      temprows: null,
      newrow: {},
      parent: this.props.tableComponent
    };
  }
  addRow = function() {
    var new_rows = [...this.state.rows];
    new_rows.push(this.state.newrow);
    //   var new_row = JSON.parse(JSON.stringify(new_rows[0]));
    var new_row = { ...this.state.newrow };

    db.collection(collectionNAame)
      .add({
        ...this.state.new_row
      })
      .then(() => {
        Object.keys(new_row).forEach(function(index) {
          new_row[index] = "";
        });
        this.setState({
          rows: new_rows,
          newrow: new_row
        });
      });
  };
}

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