Сравните два потока в Rx - PullRequest
0 голосов
/ 17 мая 2019

У меня есть две таблицы. Таблица A и Таблица B. Я использую Android с Room и Reactive Streams с помощью ktx.

The Table A has two columns Title, Ids.
Row 1 - ['example', '1,2,3,4'].
The Table B has two columns Id, Desc. 
Row 1 - [1, 'long desc']
Row 2 - [2, 'long desc 2'].

Я использую Flowable для получения данных из базы данных, но это два разных потока.

Как получить список строк в таблице B, которые имеют идентификаторы в таблице A. В таблице A идентификаторы таблицы B хранятся в виде строки.

1 Ответ

0 голосов
/ 17 мая 2019

Я не знаю деталей вашего варианта использования, но вы имеете в виду, как это?

interface TableADao {
    fun findById(id: Long): Flowable<ItemA>
}

interface TableBDao {
    fun findByIds(ids: Array<Long>): Flowable<List<ItemB>>
}

tableADao.findById(id)
    .switchMap { itemA ->
        val ids = someLongArrayConverter(itemA.ids)
        tableBDao.findByIds(ids)
    }
    .subscribe { itemBList ->
        Log.d("result", itemBList)
    }
...