我的数据库中有一个用户列表。

user1: {name: "John", pet: {name:"Riko", type: "dog"}, married: true, children: [{name: "Marry", relationship: "daughter"}] },
user2: {name: John", married: false}


提取用户节点后,我希望检查该用户是否具有某些信息。就我而言,我想检查用户是否具有字段petmarriedchildren

如果他这样做了,我想在用户的对象中存储一个新属性: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,因为他没有所有的petmarriedchildren节点,而user1具有completedQuiz: true,因为他具有这些字段。

附言我还想订阅该列表,因此,如果在提取后添加了数据,则对于所有用户,我仍将具有最新的completedQuiz状态。

什么是实现此目标的好方法?

最佳答案

假设您有一个可观察对象,可从数据库返回用户。然后可以使用map对其进行转换:

users.map( (user) => {
    ...user,
    completedQuiz: user.pet && user.married && user.children
});

09-16 05:18