【问题标题】:ReferenceError: FirebaseFirestore is not defined firebase functionsReferenceError:FirebaseFirestore 未定义 firebase 函数
【发布时间】:2021-09-19 03:11:16
【问题描述】:

我正在尝试创建一个 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']
    });
}

我不太确定发生了什么。

【问题讨论】:

    标签: node.js firebase google-cloud-firestore google-cloud-functions google-cloud-storage


    【解决方案1】:

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

    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
    

    【讨论】:

    • 现在试试这个。
    • 这是修复!非常感谢。
    猜你喜欢
    • 2018-12-20
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 2018-09-24
    • 2019-12-03
    相关资源
    最近更新 更多