0

私はあらゆる種類の順列を試しました。私がやろうとしているのは、ID でオブジェクトを取得するために get を実行し、そのオブジェクトの属性を変更してからポストバックすることで、オブジェクトを効果的に更新することです。

これが私が試したことです:

  archive(orgId: number, id: number): Observable<Aircraft> {
    return this.http.get<Aircraft>('/api/organisations/' + orgId + '/aircrafts/' + id)
        .pipe(mergeMap( a => {
          console.log(a);
        return this.http.post<IAircraft>('/api/organisations/' + orgId + '/aircrafts/' + a.id, a).subscribe();
      });
  }

結果: エラー TypeError: ストリームが必要な場所に無効なオブジェクトを指定しました。Observable、Promise、Array、または Iterable を提供できます。

archive(orgId: number, id: number): Observable<Aircraft> {
    return this.http.get<Aircraft>('/api/organisations/' + orgId + '/aircrafts/' + id)
      .map((data) => {
      return data.current = false;
    })
        .pipe(mergeMap( a => {
        return this.http.post<IAircraft>('/api/organisations/' + orgId + '/aircrafts/' + a.id, a).subscribe();
      }));
  }

エラーTypeError:ブール値「false」でプロパティ「id」を作成できません

restore(orgId: number, id: number): Observable<Aircraft> {
    return this.http.get<Aircraft>('/api/organisations/' + orgId + '/aircrafts/' + id)
      .pipe(
        mergeMap( a => {
          a.current = true;
          return this.http.post<IAircraft>('/api/organisations/' + orgId + '/aircrafts/' + a.id, a).subscribe();
        }));
  }

ERROR TypeError: ストリームが必要な場所に無効なオブジェクトを指定しました。Observable、Promise、Array、または Iterable を提供できます。

完全なエラー:

core.js:1448 ERROR TypeError: You provided an invalid object where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
    at subscribeToResult (subscribeToResult.js:74)
    at MergeMapSubscriber._innerSub (mergeMap.js:138)
    at MergeMapSubscriber._tryNext (mergeMap.js:135)
    at MergeMapSubscriber._next (mergeMap.js:118)
    at MergeMapSubscriber.Subscriber.next (Subscriber.js:92)
    at MapSubscriber._next (map.js:85)
    at MapSubscriber.Subscriber.next (Subscriber.js:92)
    at FilterSubscriber._next (filter.js:90)
    at FilterSubscriber.Subscriber.next (Subscriber.js:92)
    at MergeMapSubscriber.notifyNext (mergeMap.js:151)

マップを正しく取得できないようです。マップを取り出すと機能しますが、それでは意味がありません。また、さまざまなマップ結果をオブザーバブルにキャストしようとしましたが、API が私のトリックを正しく認識しているようで、同じエラーをスローし続けています。

これがどのように機能するかを誰かに教えてもらえますか?

編集私はそれをいじり続けました-これが最新の化身です:

  archive(orgId: number, id: number): Observable<any> {
    return this.http.get<Aircraft>('/api/organisations/' + orgId + '/aircrafts/' + id)
      .pipe(
        mergeMap(a => {
          console.log(a.constructor.name);
          console.log(a);
           a.current = false;
         return this.http.post<IAircraft>('/api/organisations/' + orgId + '/aircrafts/' a.id, a);
        }));   }

console.log(a.constructor.name) は「オブジェクト」を返す - とても便利

console.log(a) が返す

このコンソール出力

4

0 に答える 0