У меня много сообщений на экране, и у меня также есть это для проверки обновлений в режиме реального времени:
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"
}
}
}
}