javascript - 错误:从 Firestore 集合中删除项目后添加了冗余字段
问题描述
您要请求功能还是报告错误?
漏洞
当前的行为是什么? 加载页面时,我得到如下所示的预期数据:
但是,删除项目后,todayFeed
会嵌入冗余。对于每个删除的项目,todayFeed
都会再次添加字段(此字段不是在 firestore cllection 中创建的,并且仅在刷新页面之前存在于 redux 存储中)。更新商店后,实际项目数组的长度是相同的,看起来不像删除了一个项目(即使从firestore集合中删除了一个项目,刷新页面数据后看起来像第一个屏幕截图但正如预期的那样,数组中少了一项)
用户调度一个动作(redux)来删除firestore集合中的一个项目
this.props.deleteItem(item);
之后,我redux-thunk
在中间件中使用额外的参数(getFirebase
,getFirestore
)来访问 firebase 和 firestore in action creator。
let store = createStore(reducer,
compose(
applyMiddleware(thunk.withExtraArgument({ getFirebase, getFirestore })),
reduxFirestore(firebaseConfig),
reactReduxFirebase(firebaseConfig, { useFirestoreForProfile: true, userProfile: 'users', attachAuthIsReady: true })
)
);
动作创作者:
import { getFirestore } from "redux-firestore";
export const deleteItem = itemToDelete => {
return (dispatch, getState, { getFirebase, getFirestore }) => {
const firestore = getFirestore();
const authorId = getState().firebase.auth.uid;
const userRef = firestore.collection("users").doc(authorId);
userRef
.collection("todayFeed")
.doc(itemToDelete.uid)
.delete()
.then(res => {
dispatch({ type: "CHANGE_ITEM_STATE_SUCCESS", res });
})
.catch(err => {
dispatch({ type: "CHANGE_ITEM_STATE_ERROR", err });
});
};
};
我用来react-redux-firebase
在我的视图文件中获取数据。
let mapStateToProps = state => {
return {
auth: state.firebase.auth,
items:
state.firestore.ordered.users &&
state.firestore.ordered.users.length &&
state.firestore.ordered.users[0].todayFeed
};
};
export default compose(
connect(mapStateToProps),
firestoreConnect(props => {
return [
{
collection: "users",
doc: props.auth.uid,
subcollections: [
{ collection: "todayFeed", orderBy: ["pubDate", "desc"] }
]
}
];
})
)(Dashboard);
预期的行为是什么?todayFeed
删除项目后
获取预期格式的数据(不嵌入冗余字段)。
哪些版本的依赖项以及哪些浏览器和操作系统会受到此问题的影响?这在以前的版本或设置中有效吗?
操作系统:Windows 10
依赖项:
"dependencies": {
"cors": "^2.8.5",
"firebase": "^5.5.5",
"googleapis": "^42.0.0",
"moment": "^2.24.0",
"react": "^16.9.0",
"react-dom": "^16.9.0",
"react-firebaseui": "^3.1.2",
"react-redux": "^5.0.7",
"react-redux-firebase": "^2.3.0",
"react-router-dom": "^4.3.1",
"react-scripts": "2.0.5",
"react-spring": "^5.1.3",
"react-with-gesture": "^1.0.10",
"redux": "^4.0.1",
"redux-firestore": "^0.5.8",
"redux-thunk": "^2.3.0",
"scriptjs": "^2.5.9",
"styled-components": "^3.2.6"
},