Ответ 1
Я написал немного node script, которые быстро и грязно перенесли вещи, и это сработало довольно хорошо.
Это ниже, если кому-то интересен.
Примечание. Это следует использовать только в том случае, если ваша модель данных в базе данных реального времени была полностью плоской и у нее не было много вложенных данных, и вы намерены также сохранять свои данные в Firestore
Чтобы запустить этот script, просто создайте файл node с именем index.js и выбросьте его в каталог вместе с файлом учетной записи службы и сырым json файлом из базы данных в реальном времени и выполните следующее из командной строки.
$ node index.js
Script ниже.
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);
});
}