2016-01-13 56 views
1

財產我已經成立了一個socketio聊天。我試圖在用戶加入頻道時顯示舊的消息(來自mongodb)。SocketIO聊天 - 不能讀取的不確定

我能加入聊天的第一次,但如果我加載頁面在新標籤我得到的錯誤「遺漏的類型錯誤:無法讀取屬性未定義‘缺口’ - 在控制檯

當我CONSOLE.LOG(data.nick + data.msg),我得到我正在尋找的數據。我想不出什麼導致這個..

請幫幫忙!

這裏的相關客戶端代碼:

socket.on('load old messages', function(data) { 
     for(var i=0; data.length; i++) { 
      displayMsg(data[i]); 
     } 

     }); 

     function displayMsg(data) { 
      $chat.append('<span class="chatnick"><b>' + data.nick + ': </b></span><span class="chatmsg">' + data.msg + "</span><br/><hr>"); 
     } 

下面是相關服務器端代碼:

var query = Chat.find({}); 
query.sort('-created').limit(8).exec(function(err, data) { 
if(err) throw err; 
socket.emit('load old messages', data); 
}); 

這裏是我的的MongoDB代碼:

mongoose.connect('mongodb://localhost:27017/chat-logs', function(err) { 
if(err) { 
console.log(err); 
} else { 
console.log("Connected to mongodb!"); 
} 
}); 
var chatSchema = mongoose.Schema({ 
nick: String, 
msg: String, 
// channel: String, 
created: {type: Date, default: Date.now} 
}); 
var Chat = mongoose.model('Message', chatSchema); 

回答

2

您的循環是錯誤的:

for (var i = 0; i < data.length; i++) 

我承擔那只是一個錯字。

+0

編碼可以是那麼的可笑,有時..花幾個小時看着它,只能錯過的東西這麼小。謝謝! –