google-cloud-firestore - 如何使用 Google Cloud Functions 将这个大型 JSON 导入 Firestore 数据库?
问题描述
我有一个大的 JSON 文件(大约 110MB)。我正在尝试将它导入到我的 Firestore 数据库中,以便在我的 React 应用程序中使用。我该怎么做呢?
我已经尝试过使用此代码:
const admin = require('firebase-admin');
const functions = require('firebase-functions');
const serviceAccount = require('./serviceaccount.json');
const datafile = './DIID.json';
const cors = require('cors')({ origin: true });
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://databaseurl.firebaseio.com"
});
const runtimeOpts = {
timeoutSeconds: 540,
memory: '2GB'
};
exports.setData = functions.runWith(runtimeOpts).https.onRequest((request, response) => {
cors(request, response, () => {
return admin.database().ref('Destiny').push(datafile)
.then(() => {
console.log("Done");
})
})
});
但是我的函数总是在指定的 540 秒后超时,并且没有数据写入数据库。
这是我的 JSON 结构的示例:
"423789": {
"displayProperties": {
"description": "PARADISE LOST: A group of castaways seek to overthrow the divine order.",
"name": "Mythos Hack 4.1",
"icon": "/common/destiny2_content/icons/47849b754551cc0f4f03acd7554882eb.jpg",
"hasIcon": true
},
"collectibleHash": 4220193450,
"backgroundColor": {
"colorHash": 0,
"red": 0,
"green": 0,
"blue": 0,
"alpha": 0
},
"screenshot": "/common/destiny2_content/screenshots/423789.jpg",
"itemTypeDisplayName": "Gauntlets",
"uiItemDisplayStyle": "",
"itemTypeAndTierDisplayName": "Rare Gauntlets",
"displaySource": "",
"action": {
"verbName": "Dismantle",
"verbDescription": "",
"isPositive": false,
"requiredCooldownSeconds": 0,
"requiredItems": [],
"progressionRewards": [],
"actionTypeLabel": "shard",
"rewardSheetHash": 0,
"rewardItemHash": 0,
"rewardSiteHash": 0,
"requiredCooldownHash": 0,
"deleteOnAction": true,
"consumeEntireStack": false,
"useOnAcquire": false
}
}
对于许多不同的项目,这会一遍又一遍地重复。
我尝试过使用实时数据库,但文件大小超过了文件大小的最大配额,我还尝试了各种解析器来定期将文件写入数据库,但我似乎也无法正常工作。
以下是我迄今为止尝试过的一些事情的链接:
https://bigcodenerd.org/import-export-data-firestore/
任何帮助将不胜感激,如果我的问题有更好的解决方案,我愿意改变它并以不同的方式处理它。
解决方案
推荐阅读
- ios - 如何将拍摄/选取的图像设置为 uiimage?
- node.js - 如何使用 Windows PowerShell PackageManager (OneGet) 安装 Node.js?
- typescript - 如何使用 strictNullChecks 获得泛型类型推断以匹配限制较少的类型?
- reactjs - React 用户身份验证的错误边界(使用 redux)——为什么需要本地 setState?
- mysql - 保存双向不可为空的约束
- python - 读取 pandas 中的数据帧,跳过第一列以读取时间序列数据
- vb.net - 如何使用来自 2 个表的数据创建实体框架 DbSet
- javascript - Using JavaScript to submit an array and a file object to a Rails backend
- c - UART 不传输/打印多个字符
- c++ - C++ 使用声明和类型别名