这是我的情景。我有一个mongodb访问类。在初始化时,建立连接并将其保存在ReplaySubject中。消费者得到这个主题,并用它来进行数据库读写。在那个级别,它都按预期工作。
public getCollection(collectionname: string) {
// console.log('getCollection mongodb', this.mongoclient$);
return this.mongoclient$
.map(db => db.collection(collectionname))
}
消费者获取值,然后在可观察链中进行读写操作。消费者可以在建立连接之前调用此函数。
但是如果我在链中使用concatMap,它可以运行一次。与观察完成时的其他apis相同。
concatMap停止工作,因为主题没有完成。
那么如何以可观察链完成的方式从Subject获取值?
或许我做错了。什么是更好的方法来进行初始化以获取值,一个异步过程来获取值,消费者可以在获取值之前调用该值?
答案 0 :(得分:0)
.take(1)就是答案。这只适用于需要获取一个值并在可观察链上进行操作的情况。
感谢Alex Rickabaugh在gitter上。