【发布时间】:2020-04-28 05:01:50
【问题描述】:
当我使用以下代码时,我会从 firebase 获取控制台中的事件。
getEvents = () => this.db.ref('events');
this.props.firebase.getEvents().on('value', snapshot => {
console.log(snapshot.val());
});
当我添加以下代码行时,以下两个函数都会出现此错误: TypeError: this.db.ref(...).where 不是函数
GetEvents 函数显示日历上的事件。 updateEquipments 函数创建新设备
GetEvents = uid => {
this.db.ref('events').where('ownerId', '==', uid).get();
};
UpdateEquipments = id => {
this.db.collection('equipments').doc(id);
};
this.props.firebase.GetEvents(this.props.uid).then(querySnapshot => {
querySnapshot.forEach(doc => {
newEvents.push(doc.data());
this.setState({
events: newEvents,
});
});
});
createEquipment = ({ title, desc }) => {
const { equipments } = this.state;
const newEquipmentId = uuidV4();
const updatedEquipment = {
...this.state.modal,
id: newEquipmentId,
ownerId: this.props.uid,
title,
desc,
};
const nextEquipments = [...equipments];
nextEquipments.push(updatedEquipment);
this.props.firebase
.UpdateEquipments(newEquipmentId)
.set(updatedEquipment)
.then(
this.setState({
equipments: nextEquipments,
})
)
.catch(error => {
console.error('Create New Equipment error', error);
});
};
render() {
if (this.state.events) {
return (
<div className={'col-2'}>
Equipments:
<FloatingActionButton
mini={true}
className={'m-2'}
onClick={() => this.handleEquipments()}
>
<ContentAdd />
</FloatingActionButton>
<Sidebar
events={this.state.equipments}
onClickEvent={this.handleEquipments}
/>
</div>
<div style={{ height: 500 }} className={'col-8'}>
<DragAndDropCalendar
events={this.state.events}
backend={false}
/>
<Dialog
title="Task"
modal={false}
open={this.state.modalOpen}
>
<Modal
event={this.state.modal}
onRequestClose={this.handleClose}
/>
</Dialog>
<Dialog
title="Equipments"
modal={false}
open={this.state.equipmentsOpen}
onRequestClose={this.handleClose}
>
<Modal
event={this.state.modal}
onRequestClose={this.handleClose}
onCreatEvent={this.createEquipment}
/>
</Dialog>
</div>
);
}
}
【问题讨论】:
标签: javascript reactjs firebase firebase-realtime-database