Установка созданной метки времени в Firestore с помощью React - PullRequest
0 голосов
/ 18 апреля 2019

Я добавляю документ в коллекцию firestore (inboxItems) onSubmit формы.

onCreateInboxItem = event => {
  this.props.firebase.inboxItems().add({
    name: this.state.newInboxItemName,
    created: '', // I need a timestamp field here
  })
  this.setState({ name: '' });
  event.preventDefault();
}

Как получить, чтобы поле created было полем отметки времени, стекущая метка времени как значение?Оно должно быть согласованным для всех пользователей и часовых поясов.

Я вижу firebase.firestore.FieldValue.serverTimestamp(), упомянутых в документах Firebase , но на данный момент значение поля еще не установлено.Я хотел бы избежать дополнительной операции по обновлению поля.

Ответы [ 2 ]

0 голосов
/ 19 апреля 2019

Поскольку я использую аутентификацию firebase, я инициализирую firebase с корневым компонентом App через API контекста.Мне удалось решить эту проблему, добавив помощника в мой файл настроек Firebase:

class Firebase {
  constructor() {
    app.initializeApp(config);

    /* Helper */

    this.fieldValue = app.firestore.FieldValue;

    /* Firebase API's */

    this.db = app.firestore();
  }
}

А затем:

this.props.firebase.inboxItems().add({
  created: this.props.firebase.fieldValue.serverTimestamp(),
  name: this.state.newInboxItemName,
})
0 голосов
/ 18 апреля 2019

Вы можете сделать:

created: new Date(),

или:

created: firebase.firestore.Timestamp.fromDate(new Date()),

В качестве альтернативы вы можете использовать облачную функцию, как описано здесь , хотя это может быть излишним,

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