【问题标题】:Argument of type '{ query: { orderByChild: string; equalTo: string; }; }' is not assignable to parameter of type 'FirebaseListFactoryOpts''{ query: { orderByChild: string; 类型的参数;等于:字符串; }; }' 不可分配给“FirebaseListFactoryOpts”类型的参数
【发布时间】:2018-08-01 12:03:53
【问题描述】:

我正在尝试从 firebase 查询列表,但出现此错误:

'{ query: { orderByChild: string; 类型的参数;等于:字符串; }; }' 不可分配给“FirebaseListFactoryOpts”类型的参数。

this.afDB.list('/category', {query: {
    orderByChild: "type",
    equalTo: "place"
}})

【问题讨论】:

  • 这与您在此页面上看到的代码示例完全不同:github.com/angular/angularfire2/blob/master/docs/rtdb/…
  • @DougStevenson 我已经尝试过了,但它也不起作用。获取:[ts] Value of type '(ref: any) => any' has no properties in common with type 'FirebaseListFactoryOpts'. Did you mean to call it?
  • @ridwaili 您使用的是旧版本的 Angularfiredatabase 。您需要根据文档从angularfire2/database 导入正确的版本,然后以这种格式(ref: DatabaseReference) => DatabaseQuery; 传递箭头函数作为第二个参数
  • @Niladri 感谢导入正确的 angularfire2/database 后的作品 :)

标签: typescript firebase ionic3 angularfire2


【解决方案1】:

要将查询添加到列表调用,请使用传递回调而不是直接对象。列表查询文档见here。

在你的情况下,你会想要类似的东西

this.afDB.list('/category', ref => ref.orderByChild('type').equalTo('place'));

【讨论】:

  • 我已经尝试过了,但它也不起作用。获取:[ts] Value of type '(ref: any) => any' has no properties in common with type 'FirebaseListFactoryOpts'. Did you mean to call it?
  • 回调函数适用于 /src/database/database.ts 中较新的 AngularFireDatabase 类,OP 示例来自较旧的 /src/database-deprecated/firebase_list_factory.ts。
【解决方案2】:

感谢大家的帮助。

我正在导入已弃用的,这里是修复:

import { AngularFireDatabase} from 'angularfire2/database';

然后,只需关注angularfire2 documentation:

this.afDB.list('/category', ref => 
ref.orderByChild('type').equalTo('place'))
.valueChanges()
.subscribe(categoryItems => {
  this.category = categoryItems;
  loadingPopup.dismiss()
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-17
    • 2021-07-02
    • 2021-06-16
    • 2021-09-07
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 2018-04-05
    相关资源
    最近更新 更多