如何使用Node JS在Cloud Firestore中导入收集和嵌套收集数据?
我使用此代码从json文件导入到Cloud Firesore数据库,但仅在集合数据上导入
const admin = require('firebase-admin');
const serviceAccount = require("./servicekey.json");
const data = require("./data.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "database-url";
});
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!",res);
})
.catch((error) => {
console.error("Error writing document: ", error);
});
});
}
});
我的json文件格式此文件可以具有collecion和subcollectiondata或嵌套的collection数据
{
"messages2": {
"1585135109814test": {
"Ref_Chat_Type": 1,
"Last_Content_Time": "1585135492165",
"Member_Ids": ["xxx", "yyy"],
"AdminUsers": ["yyy"],
"Group_Desc": "Ttt",
"Members": [{
"User_Profile_Pic": null,
"User_Id": "xxx",
"User_Name": "vvv"
}, {
"User_Name": "sss",
"User_Profile_Pic": "",
"User_Id": "yyy"
}, {
"User_Name": "rrr",
"User_Profile_Pic": "",
"User_Id": "zzz"
}],
"Last_Content": "vhh",
"Last_Content_From_Id": "yyy",
"Group_Name": "Test",
"Group_Id": "1585135109814test",
"Last_Content_From_Username": "vvv",
"Group_Pic": "",
"subCollection": {
"messages2/1585135109814test/1585135109814test": {
"0NBKTa2Py9HvRK0yNxLa": {
"Ref_Content_type": 1,
"Content_Timestamp": 1588673106,
"From_Id": "xxx",
"Content_Id": "0NBKTa2Py9HvRK0yNxLa",
"Group_Id": "1585135109814test",
"From_User_Profile_Pic": "",
"Content": "55",
"Content_Read_By": null,
"From_Username": "vvv"
}
}
}
}
}
}
我使用批处理概念,此代码出现错误
C:\ xampp \ htdocs \ task>节点importmain.js
错误:
C:\ xampp \ htdocs \ task \ node_modules \ firebase-admin \ lib \ firebase-namespace.js:101抛出新的error_1.FirebaseAppError(error_1.AppErrorCodes.NO_APP,errorMessage); ^
FirebaseAppError:默认的Firebase应用程序不存在。使用任何Firebase服务之前,请确保您调用initializeApp()。在FirebaseAppError.PrefixedFirebaseError [作为构造函数](C:\ xampp \ htdocs \ task \ node_modules [4mfirebase-admin [24m \ lib \ utils \ error.js:42:28) xampp \ htdocs \ task \ node_modules [4mfirebase-admin [24m \ lib \ utils \ error.js:88:28)在新的FirebaseAppError(C:\ xampp \ htdocs \ task \ node_modules [4mfirebase-admin [24m \ lib \ utils FirebaseNamespaceInternals.app(C:\ xampp \ htdocs \ task \ node_modules [4mfirebase-admin [24m \ lib \ firebase-namespace.js:101:19))中的\ error.js:122:28)(C: \ xampp \ htdocs \ task \ node_modules [4mfirebase-admin [24m \ lib \ firebase-namespace.js:402:30)在FirebaseNamespace.ensureApp(C:\ xampp \ htdocs \ task \ node_modules [4mfirebase-admin [24m \ lib \ firebase-namespace.js:418:24)在FirebaseNamespace.fn(C:\ xampp \ htdocs \ task \ node_modules [4mfirebase-admin [24m \ lib \ firebase-namespace.js:327:30)。(C:\ xampp \ htdocs \ task \ importmain.js:4:16)[90m at Module._compile(internal / modules / cjs / loader.js:776:30)[39m [90m at Object.Module._extensions。 .js(内部/模块/cjs/loader.js:787:10)[39m {errorInfo:{代码:[32m'app / no-app'[39m,消息:[32m']默认Firebase应用不存在。使用任何Firebase服务之前,请确保先调用initializeApp()。'[39m},代码前缀:[32m'app'[39m} _compile(internal / modules / cjs / loader.js:776:30)[39m [90m at Object.Module._extensions..js(internal / modules / cjs / loader.js:787:10)[39m {errorInfo:{代码:[32m'app / no-app'[39m,消息:[32m']默认的Firebase应用程序不存在。使用任何Firebase服务之前,请确保先调用initializeApp()。'[39m},代码前缀:[32m'app'[39m} _compile(internal / modules / cjs / loader.js:776:30)[39m [90m at Object.Module._extensions..js(internal / modules / cjs / loader.js:787:10)[39m {errorInfo:{代码:[32m'app / no-app'[39m,消息:[32m']默认的Firebase应用程序不存在。使用任何Firebase服务之前,请确保先调用initializeApp()。'[39m},代码前缀:[32m'app'[39m}
问题在于的初始化firebase-admin
。
根据文档,正确的语法如下:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
您应该admin.initializeApp()
不带任何参数调用。
请尝试一下,让我知道它是否适合您。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句