当前位置: 首页 > 知识库问答 >
问题:

将Firebase实时数据库迁移到Firestore

耿炎彬
2023-03-14

我正在寻找最好的方法来迁移我的应用程序数据库,它使用firebase实时数据库到新的云Firestore数据库。对于我正在进行的项目,我确信我不需要做任何数据模式的更改,所以我几乎只是尝试1-1映射它。Firebase在他们的网站上建议只编写一个脚本来实现这一点,但我不确定最好的方法。有没有人已经做了一个脚本来完成这件事?

共有1个答案

慎俊雄
2023-03-14

我编写了一个小节点脚本,它以一种快速而肮脏的方式迁移东西,并且工作得相当好。

下面是如果有人有兴趣的话。

注意:只有在实时数据库中的数据模型是完全平面的并且没有很多嵌套数据,并且您打算在Firestore中保持数据平面的情况下,才应该使用该方法

$ 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);
  });
}
 类似资料:
  • 问题内容: 我有一个现有的PHP / MySQL应用程序,我正尝试将其迁移到AngularJS / Firebase,以作为学习这些较新技术的一种方式。 该应用程序在MySQL中具有自己的表架构。一个这样的表如下所示: 我的问题是:如何将这个表结构及其中的数据从MySQL迁移到Firebase? 我尝试通过查询将数据导出到JSON字符串中,例如: 这给出了有效的JSON字符串,例如: 我将其保存在

  • 我正在将Firebase实时数据库迁移到Firestore,并且我有嵌套数据 我有嵌套数据,我想从中创建一个集合。 示例: 我想从FiRecovery中的嵌套数组创建一个子集合。因此我尝试了以下方法(Cloud Function): 但我得到了错误: 您有没有想过以最好的方式迁移嵌套的子数据? 雷诺更新

  • 我已经在使用Firebase实时数据库,但是现在Firebase已经推出了云Firestore for database,所以,我如何才能把我的数据从实时数据库转移到Firestore,因为我已经有用户了,他们正在使用android应用上的实时数据库。 那么,有没有办法可以将数据库转移到FireStore?

  • 我需要将数据从Firebase实时数据库切换到Firestore DB。我该怎么做? 视频主要关注实时db,但我认为由于我没有激活实时db,它会转到Firestore。但我让它工作的唯一方法是启用实时db。所以我可以在Firebase中插入和读取数据,但我需要它在Firestore中。 任何帮助都是非常感激的。

  • 问题内容: 我有一个带有几个表的mysql数据库,我想将mysql数据迁移到ElasticSearch。通过批处理作业很容易将整个数据库迁移到ES。但是我应该如何从MySQL实时更新ES。即,如果在mysql中有更新操作,那么我应该在ES中执行相同的操作。我研究了mysql binLog,它可以反映mysql的任何更改。但是我必须将binLog解析为ES语法,我认为这确实很痛苦。谢谢!(与Solr

  • 我基本上是在Crashlytics中遵循迁移指南(这篇文章对其进行了总结)。 我一字不差地遵循相同的说明,您可以从我的中看到: 然而,当我同步我的Gradle时,我得到了这个错误: 5:02 PM Gradle同步失败:找不到DefaultDependencyHandler类型org.gradle.api.internal.artifacts.dsl.dependencies.对象的参数[com.