Firebase上发布的消息未按时间顺序显示

时间:2015-11-14 11:40:06

标签: javascript json firebase

我正在与Firebase一起制作聊天应用。 但是,我在实现这个聊天系统时遇到了麻烦。

问题:
  如果您重新加载浏览器,则Firebase上发布的消息不会按时间顺序显示。

构建数据:

{
    "users": { // User List
        "user001": { // UserId
            "name": "TestUser001", // UserName
            "image": "https://foobar.s3.amazonaws.com/uploads/avator01.png" // ImageUrl
        },
        "user002": { // UserId
            "name": "TestUser002", // UserName
            "image": "https://foobar.s3.amazonaws.com/uploads/avator02.png" // ImageUrl
        }
    },
    "rooms": { // Room List
        "room001": "RoomA", //RoomID and RoomName
        "room002": "RoomB"
    },
    "messages": { // Message List
        "room001": {  // Message each room
            "message0001": { // Message
                "user": "user001", // UserId
                "message": "Hello!", // body
                "created_at": 1447402838902 // timestamp
            }
        },
        "room002": {  // Message each room
            "message0002": { // Message
                "user": "user002", // UserId
                "message": "Hi!", // body
                "created_at": 1447402844583 // timestamp
            }
        }
    }
}

源代码:

// Message List
var messages = dataStore.child('/messages/' + currentRoomId);
var user;

messages.orderByChild("created_at").on('child_added', function(dataSnapshot) {
  var data = dataSnapshot.val();

  dataStore.child('/users/' + data.user).once('value', function(snapshot) {
    var date = new Date(data.created_at);
    var timestamp = date.toLocaleString();
    user = snapshot.val();

    $('<div/>').html( data.message ).prependTo('#messages');
    $('<div/>').html( '<a href="../' + user.name + '" target="_blank" >' + user.name + ' </a>' + ' ' + '<small>' + timestamp + '</small>' ).prependTo('#messages');
    $('<div/>').html( '<img src=' + user.image + ' class="image" />' ).prependTo('#messages');
  });
});

屏幕图片 enter image description here

0 个答案:

没有答案