gpt4 book ai didi

javascript - 仅在 Firebase 中显示带有 RoomID 的消息

转载 作者:行者123 更新时间:2023-11-28 15:16:49 26 4
gpt4 key购买 nike

我正在尝试使用单独的房间创建 FireBase 聊天,并且仅显示来自该房间的消息。如何仅显示带有 roomid = somenumber 的消息(当前设置为 4)

数据可能如下所示:

enter image description here

这是 firebase 文档后面的代码。

<body>

<!-- CHAT MARKUP -->
<div class="example-chat l-demo-container">
<header>Firebase Chat Demo</header>

<div class='example-chat-toolbar'>
<label for="nameInput">Username:</label>
<input type='text' id='nameInput' placeholder='enter a username...'>
</div>

<ul id='example-messages' class="example-chat-messages"></ul>

<footer>
<input type='text' id='messageInput' placeholder='Type a message...'>
</footer>
</div>

<!-- CHAT JAVACRIPT -->
<script>
// CREATE A REFERENCE TO FIREBASE
var messagesRef = new Firebase('https://blistering-fire-1740.firebaseio.com/');

// REGISTER DOM ELEMENTS
var messageField = $('#messageInput');
var nameField = $('#nameInput');
var messageList = $('#example-messages');

// LISTEN FOR KEYPRESS EVENT
messageField.keypress(function (e) {
if (e.keyCode == 13) {
//FIELD VALUES
var username = nameField.val();
var message = messageField.val();

//SAVE DATA TO FIREBASE AND EMPTY FIELD
messagesRef.push({name:username, text:message, roomid:4});
messageField.val('');
}
});

// Add a callback that is triggered for each chat message.
messagesRef.limitToLast(10).on('child_added', function (snapshot) {
//GET DATA
var data = snapshot.val();
var username = data.name || "anonymous";
var message = data.text;

//CREATE ELEMENTS MESSAGE & SANITIZE TEXT
var messageElement = $("<li>");
var nameElement = $("<strong class='example-chat-username'></strong>")
nameElement.text(username);
messageElement.text(message).prepend(nameElement);

//ADD MESSAGE
messageList.append(messageElement)

//SCROLL TO BOTTOM OF MESSAGE LIST
messageList[0].scrollTop = messageList[0].scrollHeight;
});
</script>
</body>

firebase doc

最佳答案

Dan 的回答可行,但这意味着您正在下载所有聊天消息。如果您不下载不需要的数据,使用较小数据计划的用户将会感激不尽:

var roomMessages = messagesRef.orderByChild('roomid').equalTo(4);
roomMessages.limitToLast(10).on('child_added', function (snapshot) {
//GET DATA
var data = snapshot.val();

您需要在 roomid 上建立索引,如 here 中所述。 .

关于javascript - 仅在 Firebase 中显示带有 RoomID 的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33507149/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com