根据需要,Mongoose会返回以下数据:
[Object]
0: Object
thread_history: Array[12]
0: Object
__v: 0
_id: "52c5be11be9931f90b000002"
body: "thread message"
uid: "maarten"
__proto__: Object
1: Object
2: Object
3: Object
我使用socket.io发出这个数据然后我尝试将数据转换为html。
通常我会使用以下for循环将发出的数据转换为html
socket.on('thread_history', function (thread_data) {
if(thread_data.thread_history) {
threads_log.push(thread_data);
console.log(threads_log);
var html = '';
for (var i = 0; i < threads_log.length; i++) {
html += '<div class="thread_wrapper">' + (threads_log[i].uid ? threads_log[i].uid : 'Server') + ' - ' + threads_log[i].body + '</div>';
}
thread_content.innerHTML = html;
thread_content.scrollTop = content.scrollHeight;
}
else {
console.log("There is a problem: ", thread_data);
}
});
当然这对于猫鼬返回的数据不起作用。
我根本无法访问这些对象,有人可以帮助我吗?我做错了什么?
答案 0 :(得分:0)
看起来你正在循环错误的对象,你正在推“thread_data”并假设循环遍历“thread_data.thread_history”。
或许更改您将数据推送到的行:
threads_log.push(thread_data.thread_history)
否则,如果您需要日志中的整个tread_data
,请在循环内执行:
threads_log[i].thread_history.body
答案 1 :(得分:0)
使用jQuery我提出了一个非常好的和干净的解决方案。
socket.on('thread_history', function (thread_data) {
if(thread_data.thread_history) {
threads_log.push(thread_data.thread_history);
console.log(threads_log);
var html = '';
// jquery each the results
$.each(thread_data.thread_history, function(){
html += '<div class="thread_wrapper">' + this.uid + " - " + this.body + '</div>';
});
thread_content.innerHTML = html;
thread_content.scrollTop = content.scrollHeight;
}