我正在将文档添加到表单的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 docs中提到的firebase.firestore.FieldValue.serverTimestamp()
,但是目前尚未设置字段值。我想避免额外的操作来更新字段。
答案 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,
})