我有一个查询,在/Feed/中获取post键,然后通过这个键获取/posts/。
snapshot.forEach((subChild) => {
var value = subChild.val();
value = value.postID;
var post = firebase.database().ref('/posts/' + value).orderByKey();
promises.push(new Promise((res, rej) => {
post.on('value', function(snapshot2) {
console.log(snapshot2.val());
res(snapshot2.val());
});
}));
});
let postsArray = await Promise.all(promises);
setPosts(prevPosts => {
return [
...prevPosts,
...Object.keys(postsArray).reverse().map(key => ({
key: key, ...postsArray[key]
}))
];
它返回这样的对象:
{id: 2, img: "src/img.jpg", title: "some text", user: "username_01"}
我也希望 Firebase 能够返回帖子 key 。我能做什么?
posts
|
----M5HMGsA3YyW_NJfSV (wanna this value in object too)
|
----id: 2
|
----img: src/img.jpg
|
----title: some text
|
----user: username_01
最佳答案
snapshot2 key
是 snapshot2
对象的属性,因此您可以轻松访问它,如下所示:
post.on('value', function(snapshot2) {
console.log(snapshot2.key);
});
现在,由于您需要合并此 key 以返回响应,因此您可以简单地使用 Object.assign()
来完成此操作方法如下:
post.on('value', function(snapshot2) {
var obj = Object.assign(snapshot2.val(), { _key: snapshot2.key });
console.log( obj );
res( obj );
});
关于javascript - firebase 不返回 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61365958/