javascript - firebase 不返回 key ?

标签 javascript reactjs firebase firebase-realtime-database

我有一个查询,在/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 keysnapshot2 对象的属性,因此您可以轻松访问它,如下所示:

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/

相关文章:

javascript - 由 `ref` 调用的 React input.focus() 也调用 `onBlur` 事件

node.js - 运行 "npm run build": npm ERR! 代码 ELIFECYCLE npm ERR! 后收到 npm 错误!错误号2

javascript - Bootstrap 导航栏从静态到固定的饮食内容/抖动效果

javascript - 数字计数器 - 制作动画计数器

javascript - 为什么 jQuery html 在与表单一起使用时,效果与 ReplaceWith 类似?

ios - Firebase推送通知有效负载中的JSON字典在iOS上被读取为String

android - SeTransactionSyncTask : Error retrieving account java. lang.IllegalStateException:没有当前的点击支付帐户

javascript - 如何在 Ryan fait stick 页脚中拆分页眉和页脚之间的空间

javascript - 在 React/TypeScript 中的循环内切换 CSS 类

firebase - 将文件从 Firebase Cloud Functions 上传到 Cloud Storage