簡體   English   中英

RXJS通過一個有效的“id”組合/合並兩個Observable數組

[英]RXJS combine/merge two Observable array by an propety “id”

我有兩個Observable

chat$: Observable<Chat[]>;
users$: Observable<User[]>;

聊天的地方是:

export interface Chat {
   user_id: string;
   message: string;
}

和用戶是:

export interface User  {
   user_id: string;
   username: string;
}

現在我想把兩個oservable組合成一個新的,例如:

threads$: Observable<Thread[]>;

在哪里Threadis:

export interface Chat {
   user_id: string;
   username: string;
   message: string;
}

我已嘗試將合並和意大利面條代碼放入地圖中,例如:

threads$ = Observable.merge(chat$, users$).pipe( map( ??? ) );

但不起作用......我是rxjs的新手。

如何使用“user_id”屬性組合兩個數組?

把這個答案作為偽代碼,因為我是在手機上做的

import {concatMap, toArray} from 'rxjs/operators';
import  {map, concat} from 'rxjs';

const fullMessage$ = (message) =>
    this.user$.get(message.user_id)
        .pipe(
            map( user => ({...message, name: user.name}))
        )

this.chat$
    .pipe(
        concatMap( (messages: Chat[]) =>
            concat(...messages.map(fullMessage$))
            )
        toArray()
        )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM