Извлечение данных из Firebase с помощью скрипта Google Apps

#javascript #firebase #google-apps-script

# #javascript #огневая база #google-приложения-скрипт

Вопрос:

Я разрабатываю электронную таблицу Google для управления бронированием отелей. Он состоит из двух основных вкладок. Один из них используется для бронирования, а другой — для отправки запросов к уже сделанным бронированиям. Мне удалось заставить его работать просто отлично с помощью встроенных инструментов Google apps script, используя вкладку в качестве базы данных.

Я пытаюсь экспортировать свои данные в базу данных Firebase, но не могу найти, как получить некоторую необходимую мне информацию. Мои данные хранятся с использованием кода, сгенерированного с использованием даты бронирования в целочисленном формате имя человека без пробелов. Это JSON, сгенерированный firebase:

 {
  "44256001LarissaMeimbergBaraldi" : {
    "code" : 44256001,
    "date" : "2021-03-01T03:00:00.000Z",
    "name" : "Larissa Meimberg Baraldi"
  },
  "44256001ÍcaroNovodeOliveira" : {
    "code" : 44256001,
    "date" : "2021-03-01T03:00:00.000Z",
    "name" : "Ícaro Novo de Oliveira"
  }
}
 

Мой вопрос таков: предположим, я хочу знать все бронирования, сделанные на день 01 / март / 2021, какой код для меня, чтобы заглянуть внутрь объектов, а затем, если они соответствуют моему поиску, получить нужную мне информацию?

Комментарии:

1. Я думаю, что если вы получите массив объектов из firebase, вам будет намного проще анализировать и запрашивать данные, например [{},{}] , вместо того, чтобы иметь разные свойства объекта для каждого имени.

2. Вы имеете в виду установку одного массива для извлечения всего содержимого базы данных, а затем анализ всей его длины?

Ответ №1:

Я преобразовал JSON в массив объектов, а затем отфильтровал по дате. Добавлены журналы консоли, чтобы проверить, все ли в порядке. Вы можете просмотреть журналы, когда перейдете к просмотру -> выполнение в вашем скрипте. Нажмите на выполнение функции, чтобы просмотреть зарегистрированные объекты.

 function myFunction() {
  var a ={
  "44256001LarissaMeimbergBaraldi" : {
    "code" : 44256001,
    "date" : "2021-03-01T03:00:00.000Z",
    "name" : "Larissa Meimberg Baraldi"
  },
  "44256001ÍcaroNovodeOliveira" : {
    "code" : 44256001,
    "date" : "2021-03-01T03:00:00.000Z",
    "name" : "Ícaro Novo de Oliveira"
  },
  "44256002ÍcaroNovodeOliveira" : {
    "code" : 44256002,
    "date" : "2021-04-01T03:00:00.000Z",
    "name" : "Ícaro Dovo de Oliveira"
  }
};
  var values_a = Object.values(a);
  var keys_a = Object.keys(a);
  var array_a = keys_a.map((item, index)=> {return {"key": item, "values": values_a[index]};});
  console.log(array_a);
  var filter_date = "2021-03-01T03:00:00.000Z";
  var filtered_a=array_a.filter(item => {return item.values.date === filter_date;})
  console.log(filtered_a);
  
}
 

Ответ №2:

Спасибо за вашу помощь! Но на самом деле моя точка зрения была немного иной, может быть, я выразился не так ясно.

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

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

 {
  "rules": {
    ".read": true,
    ".write": true,
    ".indexOn":["date"]
  }
}
 

Затем, возвращаясь к моему сценарию, это будет похоже на:

 function getReservations() {
  var ss = SpreadsheetApp.getActive().getSheetByName('Search');
  var date = ss.getRange('C11').getValue();
  var firebaseUrl = "https://script-examples.firebaseio.com/";
  var base = FirebaseApp.getDatabaseByUrl(firebaseUrl);
  var queryParameters = {orderBy:"date", equalTo: date};
  var data = base.getData("", queryParameters);
  for(var i in data) {
    Logger.log(data[i].code, data[i].name, data[i].date);
  }
}
 

Журнал извлекает:

 [20-12-08 11:30:33:696 BRT] 44256001 Larissa Meimberg Baraldi 2021-03-01T03:00:00.000Z
[20-12-08 11:30:33:698 BRT] 44256001 Ícaro Novo de Oliveira 2021-03-01T03:00:00.000Z
 

Эта информация была описана в документации здесь:

https://sites.google.com/site/scriptsexamples/new-connectors-to-google-services/firebase/tutorials/read-and-write-data-in-firebase-from-apps-script

Я думаю, что я был немного ошеломлен количеством полученной информации и пропустил эту часть урока.

Большое вам спасибо за ваше время и помощь.