首页 文章

类型'QueryFn' |中不存在'query' angularfire2

提问于
浏览
0

类型'{query:{limitTolast:number; orderByKey:boolean; }; ''不能赋值给'QueryFn'类型的参数 . 对象文字只能指定已知属性,'QueryFn'类型中不存在'query' .

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

3 回答

  • 5

    它不起作用,因为AngularFire期望将函数作为第二个参数传递 .

    我认为你的例子是测试版期间的正确方法 . (不是100%肯定)

    您可以通过以下方式使用它:

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

    在此处了解有关查询列表的详细信息:https://github.com/angular/angularfire2/blob/master/docs/rtdb/querying-lists.md

  • 1

    QueryFn必须返回firebase.database.Query,而不是void . 您可以像这样对代码进行编码,以便更清楚:

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

    这将完美地工作 . 试过我

    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

相关问题