我的数据库中有一个用户列表。
user1: {name: "John", pet: {name:"Riko", type: "dog"}, married: true, children: [{name: "Marry", relationship: "daughter"}] },
user2: {name: John", married: false}
提取用户节点后,我希望检查该用户是否具有某些信息。就我而言,我想检查用户是否具有字段
pet
,married
和children
。如果他这样做了,我想在用户的对象中存储一个新属性:
completedQuiz: true
(因为他已经通过测验添加了丢失的信息)。从上面实现逻辑之后,我应该获得的结果是:
user1: {name: "John", pet: {name:"Riko", type: "dog"}, married: true, children: [{name: "Marry", relationship: "daughter"}], completedQuiz: true },
user2: {name: John", married: false, completedQuiz: false}
user2
具有completedQuiz: false
,因为他没有所有的pet
,married
和children
节点,而user1
具有completedQuiz: true
,因为他具有这些字段。附言我还想订阅该列表,因此,如果在提取后添加了数据,则对于所有用户,我仍将具有最新的
completedQuiz
状态。什么是实现此目标的好方法?
最佳答案
假设您有一个可观察对象,可从数据库返回用户。然后可以使用map对其进行转换:
users.map( (user) => {
...user,
completedQuiz: user.pet && user.married && user.children
});