Моя база данных Firebase Realtime имеет следующую структуру:
-- Stock
-- StoreId
-- DepartmentId_1
-- ProductId_1
-- name: "productName"
-- price: 1.0
-- DepartmentId_2
-- ProductId_X
-- name: "productNameX"
-- price: 1.0
Я хотел бы прочитать DepartmentId
s, чтобы показать их в RecyclerView
. Но Android Firebase Listener извлекает все данные, содержащиеся в StoreId
.
. Я знаю, что могу использовать для l oop и получить ключи, но это не главное. Проблема заключается в количестве загруженных данных, которые могут взорвать мою квоту в Firebase.
Итак, я решил использовать облачные функции для записи ключей в другой узел, как показано ниже:
-- Departments
-- StoreId
-- DepartmentId_1: true
-- DepartmentId_2: true
-- DepartmentId_3: true
-- DepartmentId_4: true
.
.
.
Я думал, что облачные функции будут запускаться только в указанном c узле, но оказалось, что если я изменю поле price
, мой Cloud Function
сработает.
Итак, мой вопрос: как запускать мою облачную функцию только при добавлении или удалении departmentId
?
Ниже приведен мой первый шаг, так как выполнить l oop через departmentId
s и записать их в Departments узел?
exports.createStoreDepartments = functions.database
.ref('Stock/{storeId}')
.onWrite((change,context) => {
console.log('DATA CHANGED');
return true;
});
Я ценю любую помощь!