child_changed не имеет ссылки в firebase - PullRequest
0 голосов
/ 23 апреля 2020

У меня много сообщений на экране, и у меня также есть это для проверки обновлений в режиме реального времени:

var post = firebase.database().ref('/posts/' + value).orderByKey();

post.on("child_changed", function(snap) {
    var changedPost = snap.val(); // what I changed only.
    console.log(snap.key); // null
    console.log("The updated post title is " + changedPost.titulo);
});

// I also use post to foreach posts using post.once("value" ...

Проблема в том, что возврат - это только то, что я изменил, если я изменяю заголовок сообщения, он вернет только заголовок, у меня нет snap.key, чтобы получить ссылку для обновления. есть идеи как это решить?

править ------------------------------------ --------

полный код:

var Ref2 = firebase.database().ref('/Feed/' + "-idownner").limitToLast(10);

    Ref2.once('value', async function(snapshot) {
        const promises = []
        snapshot.forEach((subChild) => {
            var value = subChild.val();

            value = value.postID;

            var post = firebase.database().ref('/posts/' + value).orderByKey();

post.on("child_changed", function(snap) {
    var changedPost = snap.val(); // what I changed only.
    console.log(snap.key); // null
    console.log("The updated post title is " + changedPost.titulo);
});

            promises.push(new Promise((res, rej) => {
                post.once('value', function(snapshot2) {

                    var obj = Object.assign(snapshot2.val(), { key: snapshot2.key });

                    res(obj);
                });
            }));
        });
        const postsArray = await Promise.all(promises);
        setPosts(prevPosts => {
            return [
                ...prevPosts,  
                ...Object.keys(postsArray).reverse().map(key => ({
                    key: key, ...postsArray[key] 
                }))
            ];
        });
    });

и мой json:

{
  "Feed" : {
    "-idownner" : {
      "-M5XDPj_TGklk9Kw3YDo" : {
        "postID" : "-M5XDPj_TGklk9Kw3YDo"
      },
      "-M5XDTy1BovVNP2Vr6Tz" : {
        "postID" : "-M5XDTy1BovVNP2Vr6Tz"
      },
      "-M5XDUXYMUciF_Lfg6ec" : {
        "postID" : "-M5XDUXYMUciF_Lfg6ec"
      },
      "-M5XDVdmASSreXTH1zuF" : {
        "postID" : "-M5XDVdmASSreXTH1zuF"
      },
      "-M5XDWPwa_oq_xkFNQtv" : {
        "postID" : "-M5XDWPwa_oq_xkFNQtv"
      },
      "-M5XDWvCdjNDERvsHLYG" : {
        "postID" : "-M5XDWvCdjNDERvsHLYG"
      }
      }
    }
 },
   "posts" : {
    "-M5XDPj_TGklk9Kw3YDo" : {
      "img" : "img/",
      "timestamp" : 1587564622097,
      "titulo" : "title 1",
      "user" : "root"
    },
    "-M5XDTy1BovVNP2Vr6Tz" : {
      "img" : "img/",
      "timestamp" : 1587564635906,
      "titulo" : "title 1",
      "user" : "root"
    },
    "-M5XDTy1BovVNP2Vr6Tz" : {
      "img" : "img/",
      "timestamp" : 1587564639313,
      "titulo" : "title 1",
      "user" : "root"
    },
    "-M5XDUXYMUciF_Lfg6ec" : {
      "img" : "img/",
      "timestamp" : 1587564641641,
      "titulo" : "title 1",
      "user" : "root"
    },
    "-M5XDVdmASSreXTH1zuF" : {
      "img" : "img/",
      "timestamp" : 1587564643970,
      "titulo" : "title 1",
      "user" : "root"
    },
    "-M5XDWPwa_oq_xkFNQtv" : {
      "img" : "img/",
      "timestamp" : 1587564646214,
      "titulo" : "title 1",
      "user" : "root"
    }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...