Rxjs 6 Pipe无法在代码中使用

时间:2018-08-21 02:06:48

标签: angular rxjs google-cloud-firestore

我正在使用连接到Firestore的以前Rxjs版本代码库中的代码,我更改了所有内容以使用正确的导入,并添加了.pipe(map)。我说“ [ts]属性'pipe'在'DocumentChangeAction []类型上不存在”。这是我的职能给我的问题。谢谢。

  private mapAndUpdate(col: AngularFirestoreCollection<any>) {       
  var values;


if (this._done.value || this._loading.value) { return };

this._loading.next(true)

// Map snapshot with doc ref (needed for cursor)
return col.snapshotChanges()
  .pipe(tap(arr => {
    values = arr.pipe(
      map((snap: any) => {
      const data = snap.payload.doc.data();
      const doc = snap.payload.doc;
      return { ...data, doc }; 
    }))
  ));

    // If prepending, reverse array
    values = this.query.prepend ? values.reverse() : values

    // update source with new values, done loading
    this._data.next(values)
    this._loading.next(false)

    // no more values, mark done
    if (!values.length) {
      this._done.next(true)
    }
})
.take(1)
.subscribe()}

2 个答案:

答案 0 :(得分:1)

问题出在git rebase foo bar运算符内部:

bar

taptap(arr => { values = arr.pipe( map((snap: any) => { const data = snap.payload.doc.data(); const doc = snap.payload.doc; return { ...data, doc }; })) )); 的数组,不可观察。您必须映射每个项目。结果已经计算完毕,因此无需再次使用Observable

arr

答案 1 :(得分:0)

您导入了这些吗?

// Complete the hourglassSum function below.
int hourglassSum(vector<vector<int>> arr) {
    int max = INT_MIN;
    vector<int> sums;
    for (int i = 1; i < 5; i++) 
    {
        for (int j = 1; j < 5; j++) 
        {
            sums.push_back(arr[i][j] +
            arr[i - 1][j-1] +
            arr[i-1][j] +
            arr[i-1][j+1] +
            arr[i + 1][j - 1] +
            arr[i+1][j] +
            arr[i + 1][j + 1]); 

        }    
    }
    for (int g = 0; g  < sums.size(); g++) {
        cout << sums[g] << endl;
    }
    for (int k = 0; k < sums.size(); k++) 
    {
        if (sums[k] > max)
        {
            max = sums[k];
        }
    }
return max;
}