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
我正在尝试创建一个 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