gpt4 book ai didi

firebase - 将 Firebase 实时数据库迁移到 Firestore

转载 作者:行者123 更新时间:2023-12-02 18:18:34 26 4
gpt4 key购买 nike

我正在寻找将使用 Firebase 实时数据库的应用程序数据库迁移到新的 Cloud Firestore 数据库的最佳方法。我对我正在从事的项目充满信心,我不需要进行任何数据模式更改,所以我几乎只是尝试 1-1 映射它。 Firebase 在他们的网站上建议只需编写一个脚本来执行此操作,但我不确定最好的方法。有人已经制作了一个脚本来完成这个任务吗?

最佳答案

我编写了一个小节点脚本,它以一种快速而肮脏的方式迁移内容,并且效果非常好。

如果其他人有兴趣,请在下面。

注意:仅当您的实时数据库中的数据模型完全平坦且没有太多嵌套数据,并且您打算在 Firestore 中保持数据平坦时,才应使用此方法

要运行此脚本,只需创建一个名为 index.js 的节点文件,并将其与服务帐户文件和来自实时数据库导出的原始 json 文件一起放入一个目录中,然后从命令行运行以下命令。

$ node index.js

下面的脚本实现。

const admin = require('firebase-admin');

var serviceAccount = require("./config.json");
var database = require("./database.json");
var async = require ('async');

admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});

var db = admin.firestore();

var allEntityNames = Object.keys(database);

var asyncTasks = [];

for (var i in allEntityNames) {
var entityName = allEntityNames[i];
var entity = database[entityName];
var entityKeys = Object.keys(entity);

console.log("began migrating "+ entityName);
for (var j in entityKeys) {
var entityKey = entityKeys[j];
var dict = entity[entityKey];
asyncTasks.push(function(callback){
db.collection(entityName).doc(entityKey).set(dict)
.then(function() {
callback();
})
.catch(function(error) {
console.log(error);
callback();
});
});
}
async.parallel(asyncTasks, function(){
console.log("Finished migrating "+ entityName);
});
}

关于firebase - 将 Firebase 实时数据库迁移到 Firestore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46572567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com