尝试从db集合中获取一些消息,我尝试过该代码(服务器端):
MongoClient.connect('mongodb://127.0.0.1:27017/gt-chat', function(err, db) {
if(err) throw err;
var history="";
var collection = db.collection('gt-chat');
console.log("******************************Printing docs from Cursor Each")
collection.find({}, {_id: 0}).sort({$natural: 1}).limit(20).each(function(err, doc) {
console.log(doc)
if(doc != null) {
console.log("Doc from Each ");
history=history+console.dir(doc)+"\r\n";
console.dir(doc);
}
});
console.log("/////////////HISTORY//////////////////");
console.log(history); ; // data is shown there under the shell console, all is fine !
socket.emit('updatechat', 'SERVER', history); // should send the messages using socket
});
然后在客户端,我尝试过:
// listener, whenever the server emits 'updatechat', this updates the chat body
socket.on('updatechat', function (username, data) {
date = new Date;
h = date.getHours();
if (h<10) {
h = "0"+h;
}
m = date.getMinutes();
if (m<10) {
m = "0"+m;
}
s = date.getSeconds();
if (s<10) {
s = "0"+s;
}
var time = h+":"+m+":"+s;
$('#conversation').append('<b><strong>' + time + '</strong> '+username + ':</b> ' + data + '<br>');
});
没有按预期显示任何内容:(
我非常肯定updatechat
函数,因为我可以用它来获取消息,正如我尝试过的那样:
socket.emit('updatechat', 'SERVER',"this is history"); // < message is well sent, so no problem there!
但我没有得到所有历史。 因此,目标是从mongodb集合中获取一些消息,并使用socket emit
在浏览器下显示它们在shell下,要调试,它显示:
Doc from Each { message: '<strong>12:16:27</strong><span style=\'color:#2fed7e\'><b>guibs</b>< /span><em> hum</em>' } { message: '<strong>12:16:27</strong><span style=\'color:#2fed7e\'><b>guibs</b>< /span><em> hum</em>' }
因此,存在数据和消息,但我无法从浏览器中读取它们。 shell说:'history is not defined'
!连接有什么问题?还有我的变量声明?我不明白,谢谢你的帮助!