You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular中Realm/Mongo Watch获取Observable数组遇空结果问题

问题:Realm Watch功能无法返回正确的Observable<AccountDTO[]>结果

我想用Realm的watch功能获取Observable<AccountDTO[]>,用于在表格中展示数据。当前代码可编译,但返回空结果(集合内实际有数据),调试时无法执行到第一行之后的代码。另外有一段可正常运行的代码,但我需要返回Observable类型的结果。

有问题的代码

watchAccounts(): Observable<AccountDTO[]> {
  return new Observable(observer => {
    this.#accCollection
      .find({
        status: 30,
        sort: 25
      })
      .then(accs => {
        console.log('result: ', accs);
        if (accs) {
          observer.next(accs);
        }
        const usrStream = this.#accCollection.watch();
        usrStream
          .next(stream => {
            stream.onNext(update => observer.next(update.fullDocument));
            stream.onError(err => observer.error(err));
            observer.add(() => {
              stream.close();
            });
          })
          .catch(err => console.error('Error in stream: ', err.message));
      });
  });
}

调试时无法执行到console.log('result: ', accs);之后的代码,返回空结果。

可正常运行但不符合返回类型要求的代码

watchUser2(): void {
  this.#accCollection
    .find({
      status: 30,
      sort: 25
    })
    .then(accs => {
      console.log('result: ', accs);
      if (accs) {
      }
      const usrStream = this.#accCollection.watch();
      usrStream
        .next(stream => {
          stream.onNext(update => console.log(update)); //observer.next(update.fullDocument)
          stream.onError(err => console.error(err.message)); //observer.error(err)
          // observer.add(() => {
          //   stream.close();
          // });
        })
        .catch(err => console.error('Error in stream: ', err.message));
    });
}

内容的提问来源于stack exchange,提问作者erwin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 22:15:30