当前位置: 首页 > 知识库问答 >
问题:

类型不匹配:推断类型是否为查询?但是收集参考呢?预料之中

巢海
2023-03-14
var query = firebase.firestoreDb?.collection("myData")
    ?.document("myBooks")
    ?.collection("science")

if (sampleQns != ""){
    query = query?.whereEqualTo("sampleQns", "yes")
}
if (diagram != ""){
    query?.whereEqualTo("diagram", "yes")
}

query?.get()

如果我这样编码,我会得到类型不匹配错误(推断的类型是Query?但应该是CollectionReference?)。。。

共有1个答案

澹台华晖
2023-03-14

以下变量:

var query = firebase.firestoreDb?.collection("myData")
    ?.document("myBooks")
    ?.collection("science")

类型为CollectionReference,它扩展了查询类。在Kotlin中,无法将查询类型的对象保存到CollectionReference类型的对象中,因此类型不匹配。

但是,您可以将一个类型为集合引用的对象保存到变量查询中,这是因为集合引用实际上是一个没有过滤器的查询。

正如@PeterHaddad在他的评论中提到的那样,您应该显式地将查询定义为FiresQuery类型:

var query: Query = firebase.firestoreDb?.collection("myData")
    ?.document("myBooks")
    ?.collection("science")
 类似资料: