角度-可观察的值是否存在

时间:2018-09-04 10:57:17

标签: javascript angular typescript rxjs observable

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

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节点,而user1completedQuiz: true因为他确实有这些字段。

PS 我也想订阅该列表,因此,如果在获取数据后添加了数据,我仍将为所有用户提供最新的completedQuiz状态。

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

1 个答案:

答案 0 :(得分:3)

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

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