Javascript 如何处理嵌套的firebase查询并异步更新ionic视图?
我只是想知道是否有人能帮我解决我在Ionic应用程序中遇到的问题 我很难理解嵌套的firebase查询,也无法异步更新ionic视图。我没有用angularfire之类的东西 我的数据库结构如下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"
"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代码吗?