web-dev-qa-db-ja.com

'query'はタイプ 'QueryFn'に存在しません| angularfire2

タイプ '{クエリのクエリ:{limitTolast:数値; orderByKey:boolean; }; } 'はタイプ' QueryFn 'のパラメーターに割り当てることができません。オブジェクトリテラルは既知のプロパティのみを指定でき、' query 'はタイプ' QueryFn 'に存在しません。

package.json

"angularfire2": "^5.0.0-rc.3",
"firebase": "^4.5.1",

chat.service.ts

getMessages(): FirebaseListObservable<ChatMessage[]> {
    return this.db.list('messages', {
      query: { limitTolast : 25, orderByKey: true}
    });
  }
7
Rijo

AngularFireは関数が2番目の引数として渡されることを想定しているため、機能しません。

私はあなたの例がベータ版の間に行く正しい方法だったと思います。 (100%確実ではない)

次のように使用します。

// make sure to provide a child in the orderByChild call
getMessages(): Observable<ChatMessage[]> {
    return this.db.list('/messages', ref => {
      return ref.limitTolast(25).orderByKey(true)
    });
  }

リストのクエリの詳細については、こちらをご覧ください: https://github.com/angular/angularfire2/blob/master/docs/rtdb/querying-lists.md

10
Orlandster

QueryFnはvoidではなく、firebase.database.Queryを返す必要があります。より明確にするために、次のようなクエリをコーディングできます。

getMessages(): Observable<ChatMessage[]> {
    return this.db.list('/messages', ref => {
      let q = ref.limitTolast(25).orderByKey(true);
      return q;
    });
  }
3
Paul Mai

これは完全に機能します。私が試した

getMessages(): Observable<ChatMessage[]> {
    return this.db.list('/messages', ref => 
      let q = ref.limitTolast(25).orderByKey(true);
      return q;
    );
  }

クエリに関連する詳細については、このリンクにアクセスしてください: https://github.com/angular/angularfire2/blob/master/docs/rtdb/querying-lists.md

0
Sahil Chhikara

Angular Fireの更新のため、FirebaseListObservableをAngularFireListに置き換え、firebase.database.Queryが次のように返されることを確認してください

 getMessages(): AngularFireList<ChatMessage[]> {
    return this.db.list('messages', ref => {
      return ref.limitToLast(25).orderByKey();
    });
  }
0
Juwaki Ledwaba

あなたはこのコードを試すことができます:

return this.db.list('/categories', ref => ref.orderByChild('name')).valueChanges();
0
Mahbub Azad