dev-brothers!
我有一种方法可以更新MongoDB集合,该集合已可以在FE的Redux中访问。
问题是我的“ update”方法删除了该集合中以前聚合的对象/数组(当我尝试在FE上使用全局axios时)。当我尝试从刚刚清除的Redux中提取一些数据时,就会出现错误。
当我刷新页面时,FE再次要求BE进行收集,并且旧的好聚合将再次附加到更新的数据上,并再次以Redux state.global进行存储。
问题:触发更新集合的调用后,可以在方法中刷新Redux(state.global.example)吗?
=============== S O L U T I O N =================
1。效果不错,但效果最好:我编写了callback()来刷新父组件中的集合,该父组件映射到Redux中更新后的集合。
2。效果更好:我已经清理了后端聚合-所有相同的查找,展开和排序都在同一函数中;非常重要-BE仅响应一个已更新对象,而不是第一个解决方案中的整个集合。
=============== S O L U T I O N =================
import React from 'react';
import { connect } from 'react-redux';
import { upds } from "../../../actions/global/global";
import { Button } from 'reactstrap';
class myProj extends React.Component {
render () {
const { mycollection } = this.props
var valueToUpdate = "My new value";
var myUpdate = (valueToUpdate) => {
var beData = Object.assign({}, mycollection, { key_to_update: valueToUpdate });
delete beData.aggregate1;
delete beData.aggregate2;
delete beData.aggregate3;
this.props.onUpds("mycollection", beData);
};
return (
<React.Fragment>
<Button onClick={() => this.myUpdate("my new value")}><p>UPDATE</p></Button>
{myCollection}
</React.Fragment>
);
};
};
const mapStateToProps = state => {
return {
mycollection: state.global.mycollection
}
};
const mapDispatchToProps = dispatch => {
return {
onUpds: (objName, obj, cbk) => dispatch(upds(objName, obj, cbk))
};
};
export default connect(mapStateToProps, mapDispatchToProps)(myProj);