从mongodb集合中获取数据

时间:2014-12-11 11:41:52

标签: mongodb sockets collections database

尝试从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'!连接有什么问题?还有我的变量声明?我不明白,谢谢你的帮助!

0 个答案:

没有答案