Облачная функция Firebase не вернет ничего из forEach?
Когда мой триггер получает обновление, я пытаюсь перебрать другой узел через sdk администратора, чтобы перебрать результаты из снимка с соответствующими ключами из подстановочного знака {itemId}. По какой-то причине мой forEach, похоже, ничего не делает, и я не знаю почему. Я пытался решить эту проблему уже довольно давно. У меня никогда не было проблем с запросом к моей базе данных Firebase, но теперь, когда я пытаюсь сделать это в облачных функциях, мне совсем не повезло. Я не знаю, связано ли это с firebase-admin вообще?
Вот мой код, я оставил несколько комментариев, чтобы показать вам, что я пытаюсь сделать более четко:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
// admin.initializeApp();
//is this enough or do I need to add more configuration???
admin.initializeApp(functions.config().firebase);
exports.itemUpdate = functions.database
.ref('/items/{itemId}')
.onUpdate((change, context) => {
const before = change.before.val();
const after = change.after.val();
console.log(after); //data I want to use to update query results
//if (before === after) {
//console.log('data didnt change')
//return null;
//}
admin.database().ref('users')
.orderByChild('likedItems')
.equalTo(context.params.itemId)
.once('value')
.then(snapshot => {
//I am able to log the snapshot, but the data is misleading???
console.log(snapshot);
//I am trying to look for the likedItems that match the itemId (wild card)
//from my query - Why wont anything log? Is is a problem with my admin?
snapshot.forEach((childSnapshot) => {
var key = childSnapshot.key;
var targetItem = context.params.itemId; //item(s) to update
var child = childSnapshot.child;
var childData = childSnapshot.val();
//attempt to update childData that match the targetItem (that was originally updated)
//targetItem returns undefined here but when i log it its not undefined?
return childData.likedItems.targetItem.update(after);
});
return;
}).catch(error =>{
console.log(error);
});
});
Вот как выглядит моя структура БД для элементов, а затем пользователям понравились элементы в их узле:
"items" : {
"Item1" : {
"title" : "title1",
"type" : "type1"
},
"Item2" : {
"title" : "title2",
"type" : "type2"
},
"Item3" : {
"title" : "title3",
"type" : "type3"
},
"Item4" : {
"title" : "title4",
"type" : "type4"
},
...
...
...
},
"users" : {
"EoAhYX3mYcRASr5oPD1eSZ979Vr1" : {
"followerCount" : 4,
"followingCount" : 2,
"likedItems" : {
"Item1" : {
"title" : "title1",
"type" : "type1"
},
"Item10" : {
"title" : "title10",
"type" : "type10"
},
"Item12" : {
"title" : "title12",
"type" : "type12"
}
},
"username" : "user1"
},
...
...
...
}
Я ценю всю помощь / руководство, которое я могу получить!
Приветствия.