Я сейчас использую Node.js 8 и облачные функции Firebase версии 2.0.0.
У меня проблема с этой новой версией, потому что произошли некоторые критические изменения.
Моя проблема в том, что я написал метод, который прослушивает узел в базе данных Firebase Realtime при добавлении нового дочернего элемента.
Этот метод запускается, а затем отправляет данные другому узлу в базе данных.
Код
exports.addlikechange = functions.database.ref('/likes/{postid}/{userUID}').onWrite((change,context) => {
const model = change.after.val();
let genre = model.genre;
let videoID = model.videoID;
let userVideoID = model.userVideoID;
console.log("Start func","--------> Start Like Count <----- ");
console.log("model: ",model);
console.log("genre: ",genre);
console.log("videoId: ",videoID);
console.log("userVideoID: ",userVideoID);
const countRef = collectionRef.child('likes');
// Return the promise from countRef.transaction() so our function
// waits for this async event to complete before it exits.
return countRef.transaction(current => {
if (change.data.exists() && !change.data.previous.exists()) {
const genreList = admin.database().ref(`${genre}/${videoID}/likes`).transaction(current => {
return (current || 0) + 1;
});
const userList = admin.database().ref(`users/${userVideoID}/likes`).transaction(current => {
return (current || 0) + 1;
});
const videoList = admin.database().ref(`videos/${userVideoID}/${videoID}/likes`).transaction(current => {
return (current || 0) + 1;
});
}
}).then(() => {
console.log('Counter updated.');
console.log("End func","--------> End Like Count <----- ");
});
});
Проблема с collectionRef
, в logcat говорится, что collectionRef не определен. Но, как видите, оно определено.
Полная ошибка
ReferenceError: collectionRef is not defined
at exports.addlikechange.functions.database.ref.onWrite (/user_code/index.js:60:36)
at cloudFunctionNewSignature (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:120:23)
at cloudFunction (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:151:20)
at /var/tmp/worker/worker.js:827:24
at process._tickDomainCallback (internal/process/next_tick.js:135:7)
Есть идеи, что изменилось или как я могу это решить?