我们一直在使用public Mono<RoomData> findAndModifyUserSpectate(String roomId, String requestUserId,
boolean isSpecator){
Query query = new Query();
query.addCriteria(Criteria.where("id").is(roomId).and("userRoomDatas")
.elemMatch(Criteria.where("userId").is(requestUserId)));
Update update = new Update();
update.set("userRoomDatas.$.isSpectator : " + isSpecator, new Query(Criteria
.where("userRoomDatas").elemMatch(Criteria.where("userId").is(requestUserId))));
FindAndModifyOptions options = FindAndModifyOptions.options();
options.returnNew(true);
return template.findAndModify(query, update, options, RoomData.class);
}
进行应用程序中的状态管理。由于ngrx
和ngrx
遵循相同的状态管理原则,因此这个问题适用于两者。
对于状态管理,我们一直使用redux
库对来自服务器的所有传入数据进行规范化。关于如何在不同状态片之间共享normalizr
,我们有以下问题。例如,
entities
sliceA和sliceB都包含一个称为// app state
{
sliceA: sliceAState, // corresponds to feature module A, handled by reducerA
sliceA: sliceBState, // corresponds feature module B, handled by reducerB
}
的特定实体list
。现在正确的方法是什么
location
实体-将来可能还会有其他状态切片也需要相同的实体。location
,但这需要跨模块进行交叉引用-还请注意,我们使用延迟加载来加载不同的功能模块。谢谢。
答案 0 :(得分:0)
保持相同的状态切片,但这需要在模块之间进行交叉引用-还请注意,我们使用延迟加载来加载不同的功能模块。
为了遵守single source of truth的原则,这将是您最好的选择。
如果您开始在多个位置维护相同的数据,则每次数据更改时都需要更新多个数据源。如果只有一个真相来源,则可以消除商店中出现不一致情况的机会。