我正在尋找將正在使用Firebase實時數據庫的應用程序數據庫遷移到新的Cloud Firestore數據庫的最佳方法。我對我正在研究的項目非常有信心,我不需要對數據模式進行任何更改,所以我幾乎只是試圖對它進行映射。 Firebase在他們的網站上建議只寫一個腳本來做到這一點,但我不確定最好的解決方法。有沒有人已經完成了這個腳本?將Firebase實時數據庫遷移到Firestore
回答
我寫了一個小節點腳本,它以快速和骯髒的方式遷移事物,並且工作得非常好。
如果其他人感興趣,則在下面。
注:這應該只有在實時數據庫中的數據模型是完全平坦的,並沒有太多的嵌套的數據,你打算使用,並保持你的數據持平,以及在公司的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);
});
}
嗨,我已經創建了一個腳本爲同
import { AngularFirestore, AngularFirestoreCollection } from 'angularfire2/firestore';
import { AngularFireDatabase } from 'angularfire2/database';
constructor(private afs: AngularFirestore, private angularfire: AngularFireDatabase) {}
convert() {
this.itemsCollection = this.afs.collection('requests');//ref()
this.angularfire.list('/requests/').auditTrail().subscribe((data: any) => {
_.each(data, element =>{
this.itemsCollection.doc(element.key).set(element.payload.val()) .then((result) => { }); }); });}
你可以添加步驟來運行這個? – Luke
是 1)配置您的Firebase項目,然後 2)添加到TS文件 從'angularfire2/firestore'導入{AngularFirestore,AngularFirestoreCollection}; 從'angularfire2/database'導入{AngularFireDatabase}; convert(){this.itemsCollection = this.afs.collection('requests'); // ref() this.angularfire.list('/請求/')。auditTrail()。subscribe((data:any)=> {ee(data,element => {this.itemsCollection.doc(element.key).set(element.payload.val )).then((result)=> {});});});} –
- 1. 將現有的實時Firebase數據庫升級到Cloud Firestore
- 2. 同時使用Firebase數據庫和Firestore
- 3. Mysql實時數據庫遷移
- 4. 使用firebase-admin移除Firebase實時數據庫上的數據
- 5. 將Mysql數據庫遷移到Mssql
- 6. 將XAMPP數據庫遷移到LAMP
- 7. 將數據庫從Postgres遷移到MySQL
- 8. 將更改遷移到數據庫
- 9. 將Wordpress(MySQL)數據庫遷移到BigQuery
- 10. 將PostgreSQL數據庫遷移到MySQL
- 11. 將Activerecord數據庫遷移到Mongoid
- 12. 將數據庫從Sybase遷移到MySQL
- 13. 將數據庫SQL Server遷移到Sybase
- 14. 將Access數據庫遷移到SharePoint 2007
- 15. 將Codeigniter數據庫遷移到Wordpress
- 16. 將MySQL數據庫遷移到Sql Server
- 17. 使用EnterpriseDB遷移工具將MySQL數據庫遷移到PostgreSQL
- 18. android firebase將數據保存到實時數據庫
- 19. Firebase實時數據庫
- 20. Firebase實時數據庫addValueEventListener
- 21. Firebase Assistant:實時數據庫
- 22. 將SQL Server數據庫遷移到SQL Compact數據庫
- 23. 數據遷移到SQLSERVER數據庫
- 24. 數據庫遷移
- 25. 數據庫遷移
- 26. 數據庫遷移
- 27. 數據庫遷移
- 28. 在實時數據庫中遷移數據的查詢?
- 29. Firebase實時數據庫 - 檢索數據
- 30. 當應用程序遷移到firebase時數據未加載
https://firebase.google.com/docs/firestore/firestore-for-rtdb –
是的,知道鏈接的,但他們基本上只是建議寫一個腳本,但這不是這個問題所要求的。 – Luke
不太可能任何人都會爲此使用通用腳本,因爲它可能會根據每個人的特定用例和要求定製。 –