我有一个对象数组,我需要推送到firebase。每个对象都应该有自己的推送键。我能够实现这一目标的唯一方法是通过数组映射并将每个对象传递给处理单个对象推送的redux操作。我知道这不是最好的方法,并且想知道如何才能实现这一目标?
当我尝试将数组传递给action时(构建一个更新对象以传递给firebase.database()。ref()。update())我得到一个错误,说它只能接受普通对象。是否需要将数组转换为对象。
const arr = [{0: "x", 1:"y"}, {0:"a", 1: "b"}]
this.props.action(arr)// throws error "Actions must be plain objects"

这不可能吗?我应该使用Promises吗?
我确定有一个答案,但我无法找到,所以任何方向都会非常感激!谢谢!
以下是firebase数据和我的数组数据的屏幕截图
答案 0 :(得分:0)
好的我明白了。
//action (passed attendingMarkets array)
export const vendorTest = (vendorUid, attendingMarkets) => {
var updates = {};
attendingMarkets.map((map, idx) => {
const date = map.date;
const market = map.market;
var newMarketKey = firebase
.database()
.ref()
.child("/vendors/" + vendorUid + "/markets")
.push().key;
updates["/vendors/" + vendorUid + "/markets/" + newMarketKey] = {
date,
market
};
});
return dispatch => {
firebase
.database()
.ref()
.update(updates)
.then(() => {
dispatch({ type: VENDOR_ADD_MARKETS });
});
};
};