私はシンプルなメッセージングアプリケーションをコーディングしています。私は現在、私のデータベースに保存されている古いメッセージを取得しようとしており、それが私のアプリに表示されています。socket.ioとmongodbからデータを取得する
server.js
io.sockets.on('connection', function(socket) {
Chat.find({}, function(err, docs) {
if(err) throw err;
console.log('sending previous messages');
socket.emit("load old messages", docs);
});
socket.on('new user', function(data, callback){
if (data in users){
callback(false);
} else{
callback(true);
socket.nickname = data;
users[socket.nickname] = socket;
updateNicknames();
}
});
messaging.html だけではJavaScript
<script>
jQuery(function($){
var socket = io.connect();
var $nickForm = $('#setNick');
var $nickError = $('#nickError');
var $nickBox = $('#nickname');
var $users = $('#users');
var $messageForm = $('#send-message');
var $messageBox = $('#message');
var $chat = $('#chat');
$nickForm.submit(function(e){
e.preventDefault();
socket.emit('new user', $nickBox.val(), function(data){
if(data){
$('#nickWrap').hide();
$('#contentWrap').show();
} else{
$nickError.html('That username is already taken! Try again.');
}
});
$nickBox.val('');
});
socket.on('usernames', function(data){
var html = '';
for(var i=0; i < data.length; i++){
html += data[i] + '<br/>'
}
$users.html(html);
});
$messageForm.submit(function(e){
e.preventDefault();
socket.emit('send message', $messageBox.val(), function(data){
$chat.append('<span class="error">' + data + "</span><br/>");
});
$messageBox.val('');
});
socket.on('load old msgs', function(docs) {
for (var i=0; i < docs.length; i++) {
displayMsg(docs[i]);
}
});
socket.on('new message', function(data){
displayMsg(data);
});
function displayMsg (data) {
$chat.append('<span class="msg"><b>' + data.nick + ': </b>' + data.msg + "</span><br/>");
}
socket.on('whisper', function(data){
$chat.append('<span class="whisper"><b>' + data.nick + ': </b>' + data.msg + "</span><br/>");
});
});
</script>
コードのこの行は、サーバーから取得し、古いメッセージを表示するようになっているが、それは動作していない:
socket.on('load old msgs', function(docs) {
for (var i=0; i < docs.length; i++) {
displayMsg(docs[i]);
}
});
これは、私がチャットと呼ばれるAPIを手に入れ、自分のユーザー側に送信しようとしているので、私に問題をもたらしたコードの一部です。しかし、私のコンソールのログではサーバサイドのコードから古いメッセージを送信しているので、わからないのに正しく動作していると推測しています。これは私に長年のトラブルをもたらしており、私は助けが必要です。
uは 'docs.length'をチェックして、私はそれは私があなたを愛して – Amogh