Parse platform 解析Server-JS-Query以返回可观察的

Parse platform 解析Server-JS-Query以返回可观察的,parse-platform,promise,async-await,rxjs,observable,Parse Platform,Promise,Async Await,Rxjs,Observable,我最终将代码升级到,并且正在努力转换一个在查询后返回一个可观察函数的现有函数。我知道我的问题是query.find()现在需要异步/await,但实际上在这里的最佳实践中迷失了方向。我已经尝试过先创建可观察对象,然后使用toPromise(),使用.defer,还尝试过在query.find()中返回可观察对象。但是我相信这很可笑 任何关于这方面的指导都将不胜感激 getAttending(eventId) { const event = new this.Event();

我最终将代码升级到,并且正在努力转换一个在查询后返回一个可观察函数的现有函数。我知道我的问题是query.find()现在需要异步/await,但实际上在这里的最佳实践中迷失了方向。我已经尝试过先创建可观察对象,然后使用toPromise(),使用.defer,还尝试过在query.find()中返回可观察对象。但是我相信这很可笑

任何关于这方面的指导都将不胜感激

  getAttending(eventId) {
    const event = new this.Event();
    event.id = eventId;
    const query = new Parse.Query(this._parseInvites);
    query.limit(1000);
    query.equalTo("event_objectId", event);

    return Observable.fromPromise(query.find())
      .map((arrEventInvites) => {
        return arrEventInvites.reduce((total, invite) => {
          var countGuest = parseInt(invite.get("invite_guest"), 10);
          var countChild = parseInt(invite.get("invite_childcount"), 10);

          total += 1;

          if (isNaN(countGuest) || (!isNaN(countGuest) && !countGuest)) {
            total += 0;
          } else {
            total += countGuest;
          }

          if (isNaN(countChild) || (!isNaN(countChild) && !countChild)) {
            total += 0;
          } else {
            total += countChild;
          }

          return total;
        }, 0);
      })
      .catch((err) => {
        this.parseProvider.handleError(err);
        return Observable.throw(0);
      });
  }

query.find()。您的代码应该继续工作,我相信它实际上是以正确的方式编写的,因为您使用的是
Observable.fromPromise
函数。您使用的是哪个库来处理Observable?除非我弄错了,否则Parse不会实现可观察性。即使使用RxJS(一种更流行的实现),如何做到这一点也取决于您使用的版本。较新版本使用
from()
来转换数组、iterables和承诺,而不是
fromPromise()
。如果您能告诉我们您正在使用哪些库和/或遇到了哪些错误,这可能会有所帮助。@MrkSef-yesp正在使用RxJS@5.5.12此时此刻,为了观察到的东西。我不能说我理解在这里使用observable的好处,但这是为用户拥有的每个事件提取出席计数,因此一次可以有多个事件。@davidacêdo-技术上可行,但在我的模板中,我使用了{event?.attenting$| async}和event.attenting$=this.getAttenting(event.id);(上面的函数。我注意到正确的计数将闪烁然后消失,我的猜测是,可观察对象没有等待查询完成,但我可能错了。