回答
不可以.. firestore將數據結構化爲不同的格式,即使用集合,並且每個集合都有一系列文檔,然後以JSON格式存儲..在未來,他們可能會創建一個工具JSON轉換到公司的FireStore ..參考看看這個
:https://cloud.google.com/firestore/docs/concepts/structure-data
****編輯:****
最多可以自動化的過程在一定程度上,這是,編寫一個模擬軟件,它只會將CSV或JSON數據的字段推送到您的Cloud Firestore數據庫中。我遷移我的整個數據庫製作我只是其中檢索我的數據庫,並推動其在公司的FireStore
https://gist.github.com/JoeRoddy/1c706b77ca676bfc0983880f6e9aa8c8
這應該適用對象(JSON火力點一般是多大成立)的對象的簡單的應用程序。您可以將該代碼添加到已經使用Firestore配置的應用程序。
只要確保指向正確的JSON文件。
祝你好運!
你需要一個自定義腳本來做到這一點。
我寫的基礎上,火力地堡管理SDK一個,只要火力庫不允許您導入嵌套數組數據的。
const admin = require('./node_modules/firebase-admin');
const serviceAccount = require("./service-key.json");
const data = require("./data.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://YOUR_DB.firebaseio.com"
});
data && Object.keys(data).forEach(key => {
const nestedContent = data[key];
if (typeof nestedContent === "object") {
Object.keys(nestedContent).forEach(docTitle => {
admin.firestore()
.collection(key)
.doc(docTitle)
.set(nestedContent[docTitle])
.then((res) => {
console.log("Document successfully written!");
})
.catch((error) => {
console.error("Error writing document: ", error);
});
});
}
});
更新:我寫了一篇關於這個主題的文章 - Filling Firestore with data
一般解
我發現許多發生在一個腳本允許上傳的JSON,但沒有允許子集合。我上面的腳本處理任何級別的嵌套和子集合。它還處理文檔具有自己的數據和子集合的情況。這是基於集合是對象的數組/對象(包括空對象或數組)的假設。
要運行該腳本,請確保已安裝npm和節點。然後運行您的代碼爲node <name of the file>
。請注意,不需要將其部署爲雲功能。
const admin = require('../functions/node_modules/firebase-admin');
const serviceAccount = require("./service-key.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://<your-database-name>.firebaseio.com"
});
const data = require("./fakedb.json");
/**
* Data is a collection if
* - it has a odd depth
* - contains only objects or contains no objects.
*/
function isCollection(data, path, depth) {
if (
typeof data != 'object' ||
data == null ||
data.length === 0 ||
isEmpty(data)
) {
return false;
}
for (const key in data) {
if (typeof data[key] != 'object' || data[key] == null) {
// If there is at least one non-object item then it data then it cannot be collection.
return false;
}
}
return true;
}
// Checks if object is empty.
function isEmpty(obj) {
for(const key in obj) {
if(obj.hasOwnProperty(key)) {
return false;
}
}
return true;
}
async function upload(data, path) {
return await admin.firestore()
.doc(path.join('/'))
.set(data)
.then(() => console.log(`Document ${path.join('/')} uploaded.`))
.catch(() => console.error(`Could not write document ${path.join('/')}.`));
}
/**
*
*/
async function resolve(data, path = []) {
if (path.length > 0 && path.length % 2 == 0) {
// Document's length of path is always even, however, one of keys can actually be a collection.
// Copy an object.
const documentData = Object.assign({}, data);
for (const key in data) {
// Resolve each collection and remove it from document data.
if (isCollection(data[key], [...path, key])) {
// Remove a collection from the document data.
delete documentData[key];
// Resolve a colleciton.
resolve(data[key], [...path, key]);
}
}
// If document is empty then it means it only consisted of collections.
if (!isEmpty(documentData)) {
// Upload a document free of collections.
await upload(documentData, path);
}
} else {
// Collection's length of is always odd.
for (const key in data) {
// Resolve each collection.
await resolve(data[key], [...path, key]);
}
}
}
resolve(data);
這對我很好,這是一個比Mikki更好的(強大的和一般的)解決方案。使用這個 - 設置是相同的順便說一句,所以你可以很容易地嘗試這個或Mikki的 - 只是替換實際的代碼。 – inteist
@Maciej Caputa,您的解決方案效果很好。謝謝。然而,你可以建議你如何修改fakedb.json,以便它生成自動ID,而不是序列 - 1,2,3,... – Rinav
@Rinav您可以將數組視爲具有自動ID的集合或序列0,1,2,3 ...這一切都取決於您的JSON文件的結構。這一切都歸結爲這樣一個事實:在一個路徑中有偶數個項目的屬性上的數組將被視爲順序,如果奇數,它將被視爲一個集合。我已經實現了這種方式,但請注意,這實際上只符合Firebase規範。我想知道Firebase何時會在Firebase工具中實現此功能。 –
僅供參考。我寫了一個幫助在Firestore中導入和導出數據的函數。
- 1. 如何導入雲端firestore?
- 2. 使用數據存儲導出和導入服務導出雲端Firestore數據?
- 3. Firebase - 使用雲端功能定位特定Firestore文檔字段
- 4. Firebase Firestore - 或查詢替代
- 5. 從Firestore導出json
- 6. 導入CSV或XML到MySQL
- 7. 在雲端功能中訪問雲端Firestore文件
- 8. 如何在Firebase雲端函數中處理錯誤的JSON?
- 9. Cloud功能中的雲端Firestore查詢
- 10. 如何更新Firebase雲端功能?
- 11. 遠程導入Json文件到Firebase
- 12. Firebase雲端功能http請求到另一個Firebase雲端功能
- 13. Firestore配置 - Firebase
- 14. 如何導入CSV或TXT文件
- 15. Firebase未找到雲端功能?
- 16. 如何將我的JSON數組作爲FirebaseArray導入到Firebase中?
- 17. python直播輸入到csv或json
- 18. 雲公司的FireStore
- 19. 如何導入xlrd到谷歌雲Datalab
- 20. 如何導入csv
- 21. 如何導入CSV?
- 22. firebase-admin在firebase雲端函數中輸入typescript
- 23. Firebase Firestore REST示例
- 24. 如何將csv文件導入Google雲端sql服務(反對導入sql轉儲)
- 25. Firebase Firestore:如何構造數據
- 26. 如何在Firebase Cloud Firestore中保存GeoPoint?
- 27. 如何處理雲功能中的讀取和寫入Firestore
- 28. 如何使用Firestore獲取Firebase雲服務器中的服務器時間戳?
- 29. 導入csv,操作並導出到csv
- 30. 導入CSV到posgresql
請參見我的文章了通用的解決方案,處理子colleciotions了。 –