загрузка иерархических данных в Firebase из листов Google - PullRequest
0 голосов
/ 16 сентября 2018

Я пытаюсь загрузить данные в базу данных, где структура моей базы данных является иерархической. Как я могу управлять этой структурой в листах Google. Я искал это на многих сайтах, но ничего не нашел.
Пожалуйста помоги. Вот структура моей пожарной базы
enter image description here

обновление 1

после попытки предложить модель # 2, я не могу загрузить повторяющиеся строки данных. Вот мой скрипт Google:

var secret = 'in2HGSgx7uMtOvqhpIzUf1tPCI97cwnzGmae5Dg1'

function getFirebaseUrl(jsonPath) {
    return (
        'https://sheetsdemo-8d0e9.firebaseio.com/ ' +
        jsonPath +
        '.json?auth=' +
        secret
    )
}

function syncMasterSheet(excelData)
    var options = {
        method: 'put',
        contentType: 'application/json',
        payload: JSON.stringify(excelData)
    }
    var fireBaseUrl = getFirebaseUrl('TimeTable')

    UrlFetchApp.fetch(fireBaseUrl, options)
}

function startSync() {

    var sheet = SpreadsheetApp.getActiveSheet()
    //Get the number of rows and columns which contain some content
    var [rows, columns] = [sheet.getLastRow(), sheet.getLastColumn()]
    //Get the data contained in those rows and columns as a 2 dimensional array
    var data = sheet.getRange(1, 1, rows, columns).getValues()
    var dataObject = {};

    for (var i = 0; i < data.length; i++) {
        var dataRow = data[i];
        // in cell A I have my item name and in B i have my item code
        var day = dataRow[0];
        var section = dataRow[1];
        var course_id = dataRow[2];
        var time = dataRow[3];
        var course_title = dataRow[4];
        var teacher = dataRow[5];


        // we then create our first property on our data object dataObject.code-     name : { }
        dataObject[section + day] = {
            day: day,
            section: section,
            course_id: course_id,
            time: time,
            course_title: course_title,
            teacher: teacher

        };
        syncMasterSheet(dataObject)
    }
}

1 Ответ

0 голосов
/ 16 сентября 2018

Мне известны две модели для хранения иерархических данных в таблице / таблице:

  1. для отступа каждого уровня в следующий столбец или
  2. для добавления родительского идентификатора в каждую строку.

вставлять каждый уровень в следующий столбец

Это самое прямое отображение того, что вы показали в таблице:

     1         2         3          4       5       6
A                                  TIME    TITLE   TEACHER
B  Monday
C           FA16....
D                      COURSE1     11:00   CCN      OWAIS
E                      COURSE2     11:30   CG       MAM

Преимущество этого в том, что его довольно легко читать визуально. Но недостатком является то, что заголовки столбцов легко выходят из строя, если ваши данные не полностью однородны.

добавить родительскую идею в каждую строку

В этой модели ваши данные сглаживаются / нормализуются:

    1         2       3          4       5       6    
A  DAY       CODE1    COURSEID   TIME    TITLE   TEACHER
B  Monday    FA16.... COURSE1    11:00   CCN     OWAIS
C  Monday    FA16.... COURSE2    11:30   CG      MAM

Это очень похоже на то, как вы будете хранить данные в реляционной базе данных. В конце концов: строки - это строки, независимо от того, в какой табличной структуре вы их храните.

Если бы курсы могли быть вложенными, вы бы добавили столбец ParentID для хранения ссылки на родительский курс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...