I'm creating a recipes app just to learn Vue and Firebase Realtime Database.
This is the recipe structure:
{
  "name": "Stackoverflow shake",
  "description": "",
  "ingredients": {
    "-MLikewQrETdTWM12NVY": {
      "color": "red",
      "name": "Strawberries"
    },
    "-MLilh_HCnqX7Op7QmZ9": {
      "color": "purple",
      "name": "Pear"
    }
  }
}
And this is the ingredient structure:
{
  "name": "Pear",
  "color": "purple"
}
I have no problem creating or updating the recipe, but when I update an ingredient, to just change it's color, I'm having troubles to update all the recipes that contain that ingredient in particular.
Say I update the ingredient Pear to color: "green". The recipe Stackoverflow shake is still showing the Pear purple.
I guess that I have to iterate all the recipes that contains Pear, and update the color but I can't filter them.
What I tried:
updateIngredient({state}, payload) {
      // THIS WORKS
      db.ref("ingredients/" + payload.content.id)
      .update(payload.content).then((test) => {
        console.log(test);
      });
      // THIS DOESN'T WORK (doesn't filter only the recipes that contain that ingredient
      let query = db.ref('recipes').orderByChild(
          'ingredients/' + payload.content.id);
      query.once('value', function (snapshot) {
        snapshot.forEach(function (recipeSnapshot) {
          console.log(recipeSnapshot);
          db.ref('recipes/' + recipeSnapshot.key + '/ingredients/'
              + payload.content.id).update(payload.content);
        })
      });
    },
The second part of that method just adds the Pear ingredient to all the recipes, it doesn't filter the recipes to only the ones that have Pear.
 
     
    