Rijo
Rijo

Reputation: 3043

'query' does not exist in type 'QueryFn' | angularfire2

Argument of type '{ query: { limitTolast: number; orderByKey: boolean; }; }' is not assignable to parameter of type 'QueryFn'.Object literal may only specify known properties, and 'query' does not exist in type '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}
    });
  }

Upvotes: 7

Views: 12282

Answers (5)

Juwaki Ledwaba
Juwaki Ledwaba

Reputation: 1

due to update on Angular Fire, replace FirebaseListObservable to AngularFireList and make sure you return firebase.database.Query like this

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

Upvotes: 0

Orlandster
Orlandster

Reputation: 4858

It's not working, because AngularFire expects a function to be passed as a second argument.

I think your example was the right way to go during the beta version. (not 100% sure)

You have use it the following way:

// 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)
    });
  }

Learn more about querying lists here: https://github.com/angular/angularfire2/blob/master/docs/rtdb/querying-lists.md

Upvotes: 14

Mahbub Azad
Mahbub Azad

Reputation: 1

You can try this code:

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

Upvotes: 0

Sahil Chhikara
Sahil Chhikara

Reputation: 1

This will work perfectly. Tried by me

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

for more information related to queries goto this link: https://github.com/angular/angularfire2/blob/master/docs/rtdb/querying-lists.md

Upvotes: 0

Paul Mai
Paul Mai

Reputation: 39

QueryFn must return a firebase.database.Query, not void. You can code the query like this one, for more clear:

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

Upvotes: 3

Related Questions