我正在尝试添加子集合中的文档。在Firebase控制台中已正确添加了文档,但是我的Firestore状态未正确更新。在检查firestore.ordered之后的第一个文档ID之外,所有文档ID均未定义。但是,如果我很难刷新浏览器,它们都将获得其ID。
这是我调度操作的方式:
export const addActionCard = () => {
return (dispatch, getState, { getFirestore }) => {
// make async call to database
const firestore = getFirestore();
firestore.collection('retros').doc('oiWiKlsrI7Q2LqNXVaSA').collection('cardsAction').add({
authId: '1337',
content: 'this is a action card'
}).then(() => {
dispatch({ type: 'CREATE_CARD_SUCCESS' });
}).catch(err => {
dispatch({ type: 'CREATE_CARD_ERROR' }, err);
});
}
};
这就是我使用firestoreConnect获取数据的方式:
const mapStateToProps = (state, ownProps) => {
console.log(state);
return {
retro: state.firestore.ordered.retros,
cards: state.firestore.ordered.actionz
}
}
export default compose(
firestoreConnect((props) => [
{ collection: 'retros', doc: props.match.params.retroId },
{ collection: 'retros', doc: props.match.params.retroId, subcollections: [{ collection: 'cardsAction', }],
storeAs: 'actionz' },
]),
connect(mapStateToProps, mapDispatchToProps)
)(RetroDetails)
这是当我console.log firestore状态时的外观:
我已经通过codeandbox提供了该问题的演示。复制的步骤在以下URL上:https://wz6j0lj54k.codesandbox.io/retro/oiWiKlsrI7Q2LqNXVaSA