![](/img/trans.png)
[英]Delete a file from firebase storage using download url with Cloud Functions
[英]How to import 300Mb JSON file from Firebase Storage to Database using 'onFinalize' in Cloud Functions?
我正在尝试使用由五个 'onFinalize' 事件触发的云函数将五个 JSON 文件从 firebase 存储导入数据库。 他们每个人都有自己的收藏。
JSON 文件:通常是 5 个文件(~13Mb 有 ~9000 条记录,~19Mb 有 ~21000 条记录,~23Mb 有 57000 条记录,~95Mb 有 73000 条记录,~435Mb 有 208000 条记录),所有文件的总大小为 ~600Mb
我的代码适用于非常小的文件(我在示例 1Kb 文件上进行了测试),但是当我尝试在 firebase 控制台中上传至少 13Mb 时,我遇到了下一个错误:
并且它只向数据库添加了一个第一个对象。 看起来函数变得递归,但我不明白为什么:(
const functions = require('firebase-functions')
const { Storage } = require('@google-cloud/storage')
const storage = new Storage()
const admin = require('firebase-admin')
admin.initializeApp(functions.config().firebase)
const db = admin.firestore()
const path = require('path')
exports.logNewJSONFiles = functions
.runWith({ timeoutSeconds: 120, memory: '2GB' })
.storage.object()
.onFinalize((file) => {
return new Promise(function(resolve, reject){
storage
.bucket(file.bucket)
.file(file.name)
.download()
.then(function(data){
if (data) return JSON.parse(data)
})
.then(function(data){
if (data) {
const destination = db.collection(path.basename(file.name))
for (var obj of data) destination.doc().set(obj)
}
return resolve()
})
.catch(function(e){
reject(e)
})
})
})
云函数只允许 10 MB https://cloud.google.com/functions/quotas
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.