在Firebase中覆盖的对象

时间:2019-03-15 17:55:10

标签: firebase firebase-realtime-database google-apps-script google-sheets

从Google工作表发送数据: enter image description here

用于将数据从Google表格发送到Firebase的脚本。     函数writeData(){

var ss = SpreadsheetApp.openById("####");
var sheet = ss.getSheets()[0];
var data = sheet.getDataRange().getValues();
var dataToImport = {};


for(var i = 1; i < data.length; i++) {
var department = data[i][0];
var year = data[i][1];
var course = data[i][2];

dataToImport[department] = {};
dataToImport[department][year] = {}
dataToImport[department][year][course] = {}

dataToImport[department][year][course][i] = {
            course: data[i][3],
            dateAdded: data[i][4],
            fileSize: data[i][5],
            fileType:data[i][6],
            downloadLink: data[i][7],  
          };



}
var firebaseUrl = "https:url";
var base = FirebaseApp.getDatabaseByUrl(firebaseUrl);
base.setData("",dataToImport);  

}

发送的数据: enter image description here

问:我的问题是,由于我有父母的电气设备,并且有两个孩子,分别是1和2,每个孩子分别有一个课程dsp和aes,但是只发送了一个孩子,这是第二个孩子。

为什么第一个孩子没有被送到firebase?

2 个答案:

答案 0 :(得分:3)

此代码将以前的条目替换为新的条目。替换为-

dataToImport[department] = {};
dataToImport[department][year] = {}
dataToImport[department][year][course] = {}

与此-

dataToImport[department] = dataToImport[department] || {};
dataToImport[department][year] = dataToImport[department][year] || {}
dataToImport[department][year][course] = dataToImport[department][year][course] || {}

答案 1 :(得分:1)

作为@ra89fi's答案的旁注(因为我没有注意到覆盖错误)。

base.setData("",dataToImport);行正在使用给定数据({{1})在数据库("")的设置所有数据。 }。数据库中的所有其他数据都将被删除。

相反,您应该使用更新操作。

很遗憾,我无法确定您正在使用哪个版本的Firebase API。它不是REST API,也不是JavaScript。因此,这里有一些相关的文档链接。