Javascript 如何处理嵌套的firebase查询并异步更新ionic视图?

Javascript 如何处理嵌套的firebase查询并异步更新ionic视图?,javascript,firebase,firebase-realtime-database,ionic2,Javascript,Firebase,Firebase Realtime Database,Ionic2,我只是想知道是否有人能帮我解决我在Ionic应用程序中遇到的问题 我很难理解嵌套的firebase查询,也无法异步更新ionic视图。我没有用angularfire之类的东西 我的数据库结构如下 "posts" : { "-KguJ95gTreWH5AT5lQ1" : { "category" : "Example", "description" : "This is a test description!!!", "userID"

我只是想知道是否有人能帮我解决我在Ionic应用程序中遇到的问题

我很难理解嵌套的firebase查询,也无法异步更新ionic视图。我没有用angularfire之类的东西

我的数据库结构如下

    "posts" : {
      "-KguJ95gTreWH5AT5lQ1" : {
       "category" : "Example",
       "description" : "This is a test description!!!",
       "userID" : "SeMpRKxczcSCFpnkVDTU2pxCDV12"
      },
      "-Kh--WhNsWAXqs1jLfXu" : {
       "category" : "Example 2",
       "description" : "Test description .....",
       "userID" : "SeMpRKxczcSCFpnkVDTU2pxCDV12"
      }
   },
   "user-posts" : {
     "SeMpRKxczcSCFpnkVDTU2pxCDV12" : { // User ID
       "-KguJ95gTreWH5AT5lQ1" : { // Post
         "category" : "Example",
         "description" : "This is a test description!!!",
         "userID" : "SeMpRKxczcSCFpnkVDTU2pxCDV12"
       },
       "-Kh--WhNsWAXqs1jLfXu" : { // Post
         "category" : "Example 2",
         "description" : "Test description .....",
         "userID" : "SeMpRKxczcSCFpnkVDTU2pxCDV12"
       }
     }
   }
    const posts: Post[] = [];
this.database.ref('posts').orderByChild('category').equalTo(this.category.name).once('value')
  .then(
    (posts) => {
      //console.log(posts.val());
      posts.forEach(function(childPost) {
        var post = childPost.val();
        var user = {};

        firebase.database().ref('users/'+post.userID).on('value', function(snapshot){
            user = snapshot.val();
            // console.log(user);
        });

        var newPost = new Post(childPost.key, post.category, post.description, user );
        //console.log(JSON.stringify(newPost));
        posts.push(newPost);
      });
    }
  ).catch(
    (err) => {
      console.log(err);
    }
  );
我对数据库的调用如下

    "posts" : {
      "-KguJ95gTreWH5AT5lQ1" : {
       "category" : "Example",
       "description" : "This is a test description!!!",
       "userID" : "SeMpRKxczcSCFpnkVDTU2pxCDV12"
      },
      "-Kh--WhNsWAXqs1jLfXu" : {
       "category" : "Example 2",
       "description" : "Test description .....",
       "userID" : "SeMpRKxczcSCFpnkVDTU2pxCDV12"
      }
   },
   "user-posts" : {
     "SeMpRKxczcSCFpnkVDTU2pxCDV12" : { // User ID
       "-KguJ95gTreWH5AT5lQ1" : { // Post
         "category" : "Example",
         "description" : "This is a test description!!!",
         "userID" : "SeMpRKxczcSCFpnkVDTU2pxCDV12"
       },
       "-Kh--WhNsWAXqs1jLfXu" : { // Post
         "category" : "Example 2",
         "description" : "Test description .....",
         "userID" : "SeMpRKxczcSCFpnkVDTU2pxCDV12"
       }
     }
   }
    const posts: Post[] = [];
this.database.ref('posts').orderByChild('category').equalTo(this.category.name).once('value')
  .then(
    (posts) => {
      //console.log(posts.val());
      posts.forEach(function(childPost) {
        var post = childPost.val();
        var user = {};

        firebase.database().ref('users/'+post.userID).on('value', function(snapshot){
            user = snapshot.val();
            // console.log(user);
        });

        var newPost = new Post(childPost.key, post.category, post.description, user );
        //console.log(JSON.stringify(newPost));
        posts.push(newPost);
      });
    }
  ).catch(
    (err) => {
      console.log(err);
    }
  );
我遇到的问题是,我的视图是在第二个查询的数据得到解决之前呈现的。我必须离开视图,然后重新输入更改检测以更新我的视图


我读过一些东西,比如嵌套的观测值等,但这似乎对我正在尝试做的事情来说太过分了(或者我可能错了)。如果您有任何帮助,我们将不胜感激。

您也可以显示您的UI代码吗?