Как я могу нацелиться на глубоко вложенный объект в базе данных Google в реальном времени? - PullRequest
0 голосов
/ 05 октября 2019

Я хочу создать задание cron, удаляющее глубоко вложенные объекты в моей базе данных реального времени старше 24 часов.

Я прошел через и достиг глубоко вложенного объекта, но не могу взять /целевое значение «добавленного времени» в объекте. Как получить это значение, чтобы я мог запустить .remove на родительском? Пока он возвращается как неопределенный или выдает ошибку.

  .schedule("every 1 hours")
  .onRun(context => {
    const rootDatabaseRef = admin.database().ref("ghostData/");
    return rootDatabaseRef.ref.once("value").then(function(snapshot) {
      console.log("snap", snapshot.val());
      snapshot.forEach(function(userSnapshot) {
        let buckets = userSnapshot.val().buckets;
        console.log("buckets", buckets);
        buckets.forEach(function(bucket) {
          let currentTimeYesterday = new Date(
            new Date().getTime() - 24 * 60 * 60 * 1000
          ).getTime();
          let addedTime = bucket.val().addedTime;
          console.log("curr time", currentTimeYesterday);
          console.log("addedTime", addedTime);
        });
      });

Вот данные в моей базе данных в реальном времени, а также журналы от функций безсерверного облака:

data structure logs1 logs2

1 Ответ

0 голосов
/ 10 октября 2019

Я думаю, что у вас есть проблемы с циклом, потому что, когда вы делаете это "buckets.forEach (function (bucket)" -> bucket, в вашем случае это первый элемент списка, и у каждого элемента есть вложенный словарьИтак, сначала вы должны выполнить итерацию словаря, и для каждого ключа в словаре вы получите другой словарь, и вам нужно получить только значение добавленного времени.

Я знаю, что это трудно понять, ноЯ думаю, что это происходит из-за неправильного цикла.

Попробуйте приведенный ниже код или что-то подобное.

buckets.forEach(function(bucket){
   let currentTimeYesterday = new ......
   bucket.forEach(function(dict){
       Object.keys(dict).forEach(k => {
           console.log(k, ':', dict[k].addedTime);
           let addedTime = dict[k].addedTime;

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