如何确定用户想要查看的帖子并从firebase获取相应的数据?

时间:2018-04-18 12:47:54

标签: javascript html firebase firebase-realtime-database

我正在撰写一个简单的论坛,在主页上有一个帖子标题列表。我想让用户点击帖子标题并链接到 postPage.html 。在 postPage.html 上,我需要从firebase数据库中获取标题和内容。问题是我不知道用户点击了哪个帖子。

我一直在考虑使用 document.onclick 来获取用户点击的标题,这样我就可以使用标题作为路径在firebase中找到帖子内容了 firebase.database ()。ref(postTitle).set({post_title:postTitle ...})
如果有两个标题相同的帖子可能会有问题。

以下是我在主页上显示帖子标题列表的方法。

<table class="table table-hover">
    <thead>
    <tr>
        <th>Topics</th>
        <th>Posted by</th>
    </tr>
    </thead>
    <tbody id="allposts">
    <tr>
        <td><a href="postPage.html">title1</a></td>
        <td>person1</td>
    </tr>
    <tr>
        <td><a href="postPage.html">title2</a></td>
        <td>person2</td>
    </tr>
    </tbody>
</table>

,html看起来像这样

{{1}}


我想不出另一种方法可以做到这一点。任何建议和暗示都会有很大帮助。

2 个答案:

答案 0 :(得分:1)

您应该在帖子的每个行添加帖子的密钥,并将其作为查询字符串值添加到postPage网址。我已经调整了您的原始代码如下:

var str_1 = "<tr><td>";
var str_2 = "</a></td></tr>";
postRef.once('value').then(function(snapshot){
snapshot.forEach(function(childSnapshot){
    var childData = childSnapshot.val();
    total_post[total_post.length] = str_1 + "<a href='postPage.html?postId=" + childSnapshot.key + "'>" + childData.post_title + str_2;
});
document.getElementById('allposts').innerHTML = total_post.join('');
}).catch(e => console.log(e.message));

然后在postPage.html页面中,您将从网址获取postId。根据您将要使用的语言,您可以使用不同的方法来获取它。

在javascript中,您可以使用此处显示的方法How can I get query string values in JavaScript?并执行getParameterByName('postId');

我将其复制以供参考:

function getParameterByName(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}

答案 1 :(得分:1)

你需要添加一个&#34; unique&#34;键入每个href。

<a href="postPage.html?postId=1>Post Title</a>