使用React在Firestore中设置创建的时间戳

时间:2019-04-18 20:50:43

标签: reactjs firebase google-cloud-firestore

我正在将文档添加到表单的Firestore集合(inboxItemsonSubmit中。

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 docs中提到的firebase.firestore.FieldValue.serverTimestamp(),但是目前尚未设置字段值。我想避免额外的操作来更新字段。

2 个答案:

答案 0 :(得分:0)

您可以这样做:

created: new Date(),

或:

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

或者,您也可以使用云功能,如here所述,尽管这可能会过分用功。

答案 1 :(得分:0)

由于我使用Firebase身份验证,因此我会通过上下文API使用根App组件初始化firebase。我设法通过在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,
})