Meteor Angular forkjoin 用于服务器端数据初始化

Meteor Angular forkjoin for server side data initialization

我正在尝试使用 RxJS Observable.forkjoin 方法来同步我在服务器端创建的虚假数据,但如果我尝试将它们与 MeteorObservable.Collection<any>.insert 方法一起使用,它永远不会触发订阅。

如果我尝试将 "original" angular ObservableobservableBatchTest.push(Observable.from([i])); 一起使用,则没有问题,并且可以正常触发订阅。

这是现有问题的一个小例子:

function initFakeChats(numberOfChats: number): Observable<{}[]> {

 let observableBatch = [];

  for (var i = 0; i < numberOfChats; i++) {
    var data = {
      messages: Fake.word(),
      name: Fake.word(),
    };
    observableBatch.push(Chats.insert(data));
  }
  return Observable.forkJoin(observableBatch);
}

export function fakeAll() {

  let chatIds = initFakeChats(2).subscribe(
    fakeChatIds => {
      console.dir('Finished Fake Chats');
      console.dir(fakeChatIds);
      return fakeChatIds;
    },
    error => {
      console.dir(error);
    });
}

有没有一种特殊的流星方式可以到达类似的东西?例如动态嵌套 Meteor.call?

我现在知道问题了 - 与这个主题相关https://github.com/Urigo/meteor-rxjs/issues/25

MeteorObservable 订阅永远不会触发一个完整的事件——因此不可能触发 forkjoin(这需要所有内部可观察对象触发完成)。

combineLatest 起作用了——我现在只需要锻炼来识别像 "completed" 这样的东西(可以使用伪对象循环的数组大小来检查订阅回调是否是 "completed"), 在 运行 下一个伪造任务之前。