SocketIO Chat - 无法读取undefined的属性

时间:2016-01-13 05:57:37

标签: javascript mongodb

我已经建立了一个socketio聊天。我正在尝试在用户加入频道时显示旧消息(来自mongodb)。

我可以第一次加入聊天,但如果我在新标签中加载页面,我会在控制台中收到错误“Uncaught TypeError:无法读取属性'缺口'。

当我在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);

1 个答案:

答案 0 :(得分:2)

你的for循环错了:

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

我认为这只是一个错字。