【问题标题】:Firestore withConverter returns QueryDocumentSnapshot instead of Class in TSFirestore withConverter 返回 QueryDocumentSnapshot 而不是 TS 中的 Class
【发布时间】:2022-01-18 04:04:47
【问题描述】:

我正在尝试使用 Firestore 的 withConverted 方法将查询作为我在 Typescript 中的自定义类返回。

EventConverter 类

import Event from "@/models/Event";

class EventConverter implements FirestoreDataConverter<Event> {
    toFirestore(event: PartialWithFieldValue<Event>): DocumentData {
        return {
            id: event.id,
            code: event.code
        }
    }

    fromFirestore(snapshot: QueryDocumentSnapshot): Event {
        const data = snapshot.data()
        return new Event(
            data.id,
            data.code
        )
    }
}

export default EventConverter

调用代码 如您所见,我期望的返回类型是一个事件,例如我在 eventConverter 中定义的

export async function getEventFromCode(code: string): Promise<Event> {
    const q = query(
        collection(db, 'events').withConverter(new EventConverter()),
        where('code', '==', code),
        limit(1)
    )

    const querySnapshot = await getDocs(q)
    return querySnapshot.docs[0]
}

但是 Typescript 让我知道:

TS2740:“QueryDocumentSnapshot”类型缺少“Event”类型的以下属性:气泡、cancelBubble、可取消、组合,

【问题讨论】:

    标签: typescript firebase google-cloud-firestore


    【解决方案1】:

    您似乎正在参加此活动:

    https://developer.mozilla.org/en-US/docs/Web/API/Event

    而不是您的自定义类 Event。

    【讨论】:

    • 原来是这样,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-07-06
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 2020-11-28
    相关资源
    最近更新 更多