我有一个创建用户的函数,但在创建用户之前,我想检查该会话中是否已经存在另一个具有相同userName的用户:
public createUser(form: FormGroup, sessionCode?: string): void {
if (sessionCode && this.checkForDuplicateUserInSession(form, sessionCode)) return;
this.apollo.mutate<CreateUser>({
mutation: CREATE_USER,
variables: {
name: form.controls['user'].get('userName')?.value,
},
}).subscribe(
...
);
}
private checkForDuplicateUserInSession(form: FormGroup, sessionCode?: string): void {
this.apollo.query<GetSession>({
query: GET_SESSION,
variables: {
code: sessionCode
}
}).subscribe({
next: ({data}) => {
return data.getSession.players.some((player) => player.name === form.controls['user'].get('userName')?.value);
}
});
}
checkForDuplicateUserInSession()
确实可以正确地检查另一个用户是否已经存在,但我不确定如何在createUser()
函数中使用它。
我是否必须创建一个userIsDuplicate$
可观察对象,然后将some()
结果推送到它,然后订阅它,或者有没有其他我看不到的方法?
1条答案
按热度按时间goqiplq21#
在
checkForDuplicateUserInSession
方法中使用lastValueFrom
函数转换Observable in Promise(doc here)。然后在createUser
方法中使用async/await。示例: