Облачные функции для Firebase - Удалить старшего ребенка

1

У меня есть функция onWrite cloud, настроенная для прослушивания, когда пользователь что-то обновляет. Я пытаюсь удалить самого старого ребенка, если его больше 3, это я там:

exports.removeOld = functions.database.ref('/users/{uid}/media').onWrite(event => {

    const uid = event.params.uid

    if(event.data.numChildren() > 3) {
        //Remove Oldest child...
    }

})

У каждого из этих детей есть клавиша "timestamp".

{
  "users" : {
    "jKAWX7v9dSOsJtatyHHXPQ3MO193" : {
      "media" : {
        "-Kq2_NvqCXCg_ogVRvA" : {
          "date" : 1.501151203274347E9,
          "title" : "Something..."
        },
        "-Kq2_V3t_kws3vlAt6B" : {
          "date" : 1.501151232526373E9,
          "title" : "Hello World.."
        }
        "-Kq2_V3t_kws3B6B" : {
          "date" : 1.501151232526373E9,
          "title" : "Hello World.."
        }
      }
    }
  }
}

Поэтому в приведенном выше примере, когда текстовое значение добавляется к "media", самым старым будет удаление.

  • 0
    Можете ли вы добавить структуру Firebase Childs?
  • 0
    Конечно, я обновил свой вопрос.
Теги:
firebase
google-cloud-functions
firebase-realtime-database

1 ответ

0

Этот образец должен помочь вам.

Вам нужно что-то вроде этого:

const MAX_LOG_COUNT = 3;

exports.removeOld = functions.database.ref('/users/{uid}/media/{mediaId}').onCreate(event => {
    const parentRef = event.data.ref.parent;

    return parentRef.once('value').then(snapshot => {
        if (snapshot.numChildren() >= MAX_LOG_COUNT) {
            let childCount = 0;

            const updates = {};

            snapshot.forEach(function(child) {
                if (++childCount <= snapshot.numChildren() - MAX_LOG_COUNT) {
                    updates[child.key] = null;
                }
            });

            // Update the parent. This effectively removes the extra children.
            return parentRef.update(updates);
        }
    });
});

Здесь вы можете найти все примеры облачных функций для образцов Firebase.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню