ReferenceError: FirebaseFirestore is not defined firebase functions

ReferenceError: FirebaseFirestore is not defined firebase functions

我正在尝试创建一个 firebase 函数,该函数在云存储桶上的对象元数据发生变化时触发,但是当该函数触发时我收到错误消息:

ReferenceError: FirebaseFirestore is not defined
at addKapsulFromStorageObject

代码如下:

import * as functions from "firebase-functions";

const { v4: uuidv4 } = require('uuid');

import admin = require('firebase-admin');
import { ObjectMetadata } from "firebase-functions/lib/providers/storage";
admin.initializeApp();

const database = admin.firestore();
database.settings({ ignoreUndefinedProperties: true })

const KAPSUL_COLLECTION_ID = 'kapsuls';

exports.onKapsulFileAdded = functions.storage.object().onFinalize(async (object) =>{
    addKapsulFromStorageObject(object);
})

exports.onKapsulMetaDataUpdated = functions.storage.object().onMetadataUpdate(async (object) => {
    addKapsulFromStorageObject(object);
});

async function addKapsulFromStorageObject(object: ObjectMetadata) {
    const metaData = object.metadata;
    if(metaData == null || metaData == undefined) return;

    const kapsulId = uuidv4()
    console.log("Adding Kapsul to firestore.")
    await database.collection(KAPSUL_COLLECTION_ID).doc(kapsulId).set({
        id: kapsulId,
        coordinates: new FirebaseFirestore.GeoPoint(parseFloat( metaData['lat']), parseFloat(metaData['long'])),
        first_name: metaData['first_name'],
        last_name:  metaData['last_name'],
        date: FirebaseFirestore.Timestamp.fromDate(new Date(metaData['date'])),
        is_online: JSON.parse(metaData['is_online']),
        is_paid: JSON.parse(metaData['is_paid']),
        always_unlockable: metaData['always_unlockable'],
        title: metaData['title'],
        unlock_distance: parseFloat(metaData['unlock_distance']),
        video_url: object.mediaLink,
        metaData: metaData['thumbnail_url']
    });
}

我不太确定发生了什么。

FirebaseFirestore 未定义,但您在两个地方使用它:

date: FirebaseFirestore.Timestamp.fromDate(new Date(metaData['date'])),
// and
coordinates: new FirebaseFirestore.GeoPoint(parseFloat( metaData['lat']), parseFloat(metaData['long'])),

尝试使用 admin.firestore 代替:

coordinates: new admin.firestore.GeoPoint(parseFloat( metaData['lat']), parseFloat(metaData['long'])),
                 ^^^^^^^^^^^^^^^

date: admin.firestore.Timestamp.fromDate(new Date(metaData['date'])),

如果您正在学习任何教程,那么他们可能已经在上面的某个地方声明了:

const FirebaseFirestore = admin.firestore