我有一个应用程序,可以容纳人们和他们的笔记。这些笔记可以与很多人联系起来(例如,对于Person1和Person3,会出现Note1)。
我正在使用NGRX将我的状态保存在记忆中。
现在查看ngrx示例应用程序,您可以获得一系列书籍的好例子。在那里,他们使用一个状态来保存由bookId索引的对象数组(用于快速检索)。
当集合中的项目(在我的情况下是笔记)可能与很多人有关时,如何做到这一点?
我首先使用人员的uid索引对象数组:
export interface NoteCollection {
[uid: string]: Note[];
}
考虑:
export const getPersonNotes: any = createSelector(getNotes,
getSelectedPerson, (notes: any, selectedPersonId: string) => {
return notes.filter((note: Note) => note.refUid === selectedId);
});
替代:
有什么建议吗?替代方案感觉很奇怪,因为为什么当使用一半的状态不在redux中时才使用ngrx?
答案 0 :(得分:0)
您可以执行以下操作来删除Note冗余问题:
interface NoteCollection {
[noteId: string]: Note[];
}
interface PersonCollection {
[personId: string]: Person;
}
interface Person {
noteIds: string[]; // an array of noteIds.
}