Облачная функция 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"
        },
        ...
        ...
        ...
    }

Я ценю всю помощь / руководство, которое я могу получить!

Приветствия.

0 ответов

Другие вопросы по тегам