Я пытался использовать функции Firebase для написания простого метода, но я незнаком с JS.
Ниже приведена структура моей базы данных в реальном времени
-spots
--- is_hidden: false
--- любит
------ like_id_1: true
--- недолюбливает
------ dislike_id_1: true
Я пытаюсь написать простой метод, который выполняет следующие действия: всякий раз, когда запись добавляется в неприязнь, подсчитывает симпатии и антипатии.
Если количество антипатий больше, чем количество (лайков + 5),
изменить значение is_hidden на true
Это моя попытка решить проблему
exports.checkHiddenStatus = functions.database.ref('/spots/{spotid}').onWrite(
(change, context) => {
const collectionRef = change.after.ref;
const isHiddenRef = collectionRef.child('is_hidden');
const likesRef = collectionRef.child('likes');
const dislikesRef = collectionRef.child('dislikes');
if(isHiddenRef.before.val()) return;
let likeCount = likesRef.numChildren();
let dislikeCount = dislikesRef.numChildren();
let isHidden = false;
if( dislikeCount >= (likeCount + 5))
isHidden = true;
if(!isHidden) return;
// Return the promise from countRef.transaction() so our function
// waits for this async event to complete before it exits.
return isHiddenRef.transaction((current) => {
return isHidden;
}).then(() => {
return console.log('Counter updated.');
});
});
К сожалению, потому что у меня нет опыта работы с JS, я продолжаю застрять с сообщениями об ошибках, которые не понимаю. Самое последнее существо
TypeError: Невозможно прочитать свойство 'val' из неопределенного
at exports.checkHiddenStatus.functions.database.ref.onWrite (/user_code/index.js:28:28)
Может кто-нибудь помочь мне написать эту функцию? Спасибо!