我已经建立了一个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);
答案 0 :(得分:2)
你的for循环错了:
for (var i = 0; i < data.length; i++)
我认为这只是一个错字。