【发布时间】:2019-06-13 11:36:48
【问题描述】:
我可以使用Ngrx - Entity Adapter 在一个实体中拥有一组实体吗?
我需要在一个实体中创建一个实体集合,如何将 NgRx 与 Cloud Firestore 结合使用?
我知道我可以在 Pizza 文档中创建一个数组,但我想使用 Cloud Firestore 的可扩展性来执行此操作,因为我想使用动态 Cloud Functions 执行功能。
我想要类似于 AngularFire2 State Changex With Ngrx 课程中的内容,但我希望每个 Pizza 的浇头应保持在每个实体的 Pizzas 状态内。
Cloud Firestore 路径:
PathRefPizzas:pizzas/{pizaId};
PathRefToppings:pizzas/{pizaId}/toppings/{toppingId};
export function pizzasReducer(
state: PizzaState = initialState,
action: ActionPizza) {
switch (action.type) {
case actionsPizza.PIZZA_ADDED: {
return unidadeAdapter.addOne(action.payload, state)
};
case actionsPizza.PIZZA_MODIFIED:
return pizzaAdapter.updateOne({
id: action.payload.id,
changes: action.payload
}, state)
case actionsPizza.PIZZA_REMOVED:
return pizzaAdapter.removeOne(action.payload.id, state)
case actionsPizza.TOPPING_ADDED: {
// Here I need to add Toppings inside a Pizza entity in which it belongs.
return toppingsAdapter.addOne(action.payload, state);
}
default:
return state;
}
状态中的数据应该如下。
pizzas: {
ids: [...]
entities: [
{'pizza1': {id: 'pizza1, name: 'Pizza 1', toppings: [...]},
{'pizza2': {id: 'pizza2, name: 'Pizza 2', toppings: [...]}
{'pizza3': {id: 'pizza3, name: 'Pizza 3', toppings: [...]}
{'pizza4': {id: 'pizza4, name: 'Pizza 4', toppings: [...]}
{'pizza5': {id: 'pizza5, name: 'Pizza 5', toppings: [...]}
];
}
我将如何使用 ngrx 状态管理来做到这一点?如果有人可以帮助我如何做到这一点,我将非常感激,这对我来说非常重要!!!
【问题讨论】:
标签: angular firebase google-cloud-firestore angularfire2 ngrx